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> * <p><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> * <br>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<? extends RestResourceResolver> 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> * <p><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> * <p><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<? extends RestLogger> 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> * <p><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> * <p><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<? extends RestCallHandler> 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> * <p><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> * <p><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<? extends RestInfoProvider> 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<? extends SerializerListener> 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<? extends ParserListener> 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> * <p><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> * <h5 class='section'>Example:</h5><a name="line.690"></a>
-<span class="sourceLineNo">691</span> * <p class='bcode'><a name="line.691"></a>
-<span class="sourceLineNo">692</span> * <ja>@RestResource</ja>(<a name="line.692"></a>
-<span class="sourceLineNo">693</span> * path=<js>"/addressBook"</js>,<a name="line.693"></a>
-<span class="sourceLineNo">694</span> *<a name="line.694"></a>
-<span class="sourceLineNo">695</span> * <jc>// Swagger info.</jc><a name="line.695"></a>
-<span class="sourceLineNo">696</span> * swagger=<ja>@ResourceSwagger</ja>(<a name="line.696"></a>
-<span class="sourceLineNo">697</span> * contact=<js>"{name:'John Smith',email:'john@smith.com'}"</js>,<a name="line.697"></a>
-<span class="sourceLineNo">698</span> * license=<js>"{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}"</js>,<a name="line.698"></a>
-<span class="sourceLineNo">699</span> * version=<js>"2.0"</js>,<a name="line.699"></a>
-<span class="sourceLineNo">700</span> * termsOfService=<js>"You're on your own."</js>,<a name="line.700"></a>
-<span class="sourceLineNo">701</span> * tags=<js>"[{name:'Java',description:'Java utility',externalDocs:{description:'Home page',url:'http://juneau.apache.org'}}]"</js>,<a name="line.701"></a>
-<span class="sourceLineNo">702</span> * externalDocs=<js>"{description:'Home page',url:'http://juneau.apache.org'}"</js><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> * </p><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> * <p><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> * <p class='bcode'><a name="line.714"></a>
-<span class="sourceLineNo">715</span> * <ja>@RestResource</ja>(<a name="line.715"></a>
-<span class="sourceLineNo">716</span> * path=<js>"/addressBook"</js>,<a name="line.716"></a>
-<span class="sourceLineNo">717</span> *<a name="line.717"></a>
-<span class="sourceLineNo">718</span> * <jc>// 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.</jc><a name="line.721"></a>
-<span class="sourceLineNo">722</span> * htmldoc=<ja>@HtmlDoc</ja>(<a name="line.722"></a>
-<span class="sourceLineNo">723</span> * <jc>// Widgets for $W variables.</jc><a name="line.723"></a>
-<span class="sourceLineNo">724</span> * widgets={<a name="line.724"></a>
-<span class="sourceLineNo">725</span> * PoweredByJuneau.<jk>class</jk>,<a name="line.725"></a>
-<span class="sourceLineNo">726</span> * ContentTypeLinks.<jk>class</jk><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> * <js>"up: request:/.."</js>,<a name="line.729"></a>
-<span class="sourceLineNo">730</span> * <js>"options: servlet:/?method=OPTIONS"</js>,<a name="line.730"></a>
-<span class="sourceLineNo">731</span> * <js>"source: $C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java"</js>,<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> * <js>"&lt;div style='max-width:400px;min-width:200px'&gt;"</js>,<a name="line.734"></a>
-<span class="sourceLineNo">735</span> * <js>" &lt;p&gt;Proof-of-concept resource that shows off the capabilities of working with POJO resources.&lt;/p&gt;"</js>,<a name="line.735"></a>
-<span class="sourceLineNo">736</span> * <js>" &lt;p&gt;Provides examples of: &lt;/p&gt;"</js>,<a name="line.736"></a>
-<span class="sourceLineNo">737</span> * <js>" &lt;ul&gt;"</js>,<a name="line.737"></a>
-<span class="sourceLineNo">738</span> * <js>" &lt;li&gt;XML and RDF namespaces"</js>,<a name="line.738"></a>
-<span class="sourceLineNo">739</span> * <js>" &lt;li&gt;Swagger documentation"</js>,<a name="line.739"></a>
-<span class="sourceLineNo">740</span> * <js>" &lt;li&gt;Widgets"</js>,<a name="line.740"></a>
-<span class="sourceLineNo">741</span> * <js>" &lt;/ul&gt;"</js>,<a name="line.741"></a>
-<span class="sourceLineNo">742</span> * <js>" &lt;p style='text-weight:bold;text-decoration:underline;'&gt;Available Content Types&lt;/p&gt;"</js>,<a name="line.742"></a>
-<span class="sourceLineNo">743</span> * <js>" $W{ContentTypeLinks}"</js>,<a name="line.743"></a>
-<span class="sourceLineNo">744</span> * <js>"&lt;/div&gt;"</js><a name="line.744"></a>
-<span class="sourceLineNo">745</span> * },<a name="line.745"></a>
-<span class="sourceLineNo">746</span> * footer=<js>"$W{PoweredByJuneau}"</js><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> * </p><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> * <p><a name="line.756"></a>
-<span class="sourceLineNo">757</span> * This setting is useful if you want to use <js>"context:/child/path"</js> 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<? extends RestResourceResolver> 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> * <p><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> * <p><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<? extends RestLogger> 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> * <p><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> * <p><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<? extends RestCallHandler> 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> * <p><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> * <p><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<? extends RestInfoProvider> 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<? extends SerializerListener> 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<? extends ParserListener> 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> * <p><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> * <h5 class='section'>Example:</h5><a name="line.688"></a>
+<span class="sourceLineNo">689</span> * <p class='bcode'><a name="line.689"></a>
+<span class="sourceLineNo">690</span> * <ja>@RestResource</ja>(<a name="line.690"></a>
+<span class="sourceLineNo">691</span> * path=<js>"/addressBook"</js>,<a name="line.691"></a>
+<span class="sourceLineNo">692</span> *<a name="line.692"></a>
+<span class="sourceLineNo">693</span> * <jc>// Swagger info.</jc><a name="line.693"></a>
+<span class="sourceLineNo">694</span> * swagger=<ja>@ResourceSwagger</ja>(<a name="line.694"></a>
+<span class="sourceLineNo">695</span> * contact=<js>"{name:'John Smith',email:'john@smith.com'}"</js>,<a name="line.695"></a>
+<span class="sourceLineNo">696</span> * license=<js>"{name:'Apache 2.0',url:'http://www.apache.org/licenses/LICENSE-2.0.html'}"</js>,<a name="line.696"></a>
+<span class="sourceLineNo">697</span> * version=<js>"2.0"</js>,<a name="line.697"></a>
+<span class="sourceLineNo">698</span> * termsOfService=<js>"You're on your own."</js>,<a name="line.698"></a>
+<span class="sourceLineNo">699</span> * tags=<js>"[{name:'Java',description:'Java utility',externalDocs:{description:'Home page',url:'http://juneau.apache.org'}}]"</js>,<a name="line.699"></a>
+<span class="sourceLineNo">700</span> * externalDocs=<js>"{description:'Home page',url:'http://juneau.apache.org'}"</js><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> * </p><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> * <p><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> * <p class='bcode'><a name="line.712"></a>
+<span class="sourceLineNo">713</span> * <ja>@RestResource</ja>(<a name="line.713"></a>
+<span class="sourceLineNo">714</span> * path=<js>"/addressBook"</js>,<a name="line.714"></a>
+<span class="sourceLineNo">715</span> *<a name="line.715"></a>
+<span class="sourceLineNo">716</span> * <jc>// 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.</jc><a name="line.719"></a>
+<span class="sourceLineNo">720</span> * htmldoc=<ja>@HtmlDoc</ja>(<a name="line.720"></a>
+<span class="sourceLineNo">721</span> * <jc>// Widgets for $W variables.</jc><a name="line.721"></a>
+<span class="sourceLineNo">722</span> * widgets={<a name="line.722"></a>
+<span class="sourceLineNo">723</span> * PoweredByJuneau.<jk>class</jk>,<a name="line.723"></a>
+<span class="sourceLineNo">724</span> * ContentTypeLinks.<jk>class</jk><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> * <js>"up: request:/.."</js>,<a name="line.727"></a>
+<span class="sourceLineNo">728</span> * <js>"options: servlet:/?method=OPTIONS"</js>,<a name="line.728"></a>
+<span class="sourceLineNo">729</span> * <js>"source: $C{Source/gitHub}/org/apache/juneau/examples/rest/addressbook/AddressBookResource.java"</js>,<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> * <js>"&lt;div style='max-width:400px;min-width:200px'&gt;"</js>,<a name="line.732"></a>
+<span class="sourceLineNo">733</span> * <js>" &lt;p&gt;Proof-of-concept resource that shows off the capabilities of working with POJO resources.&lt;/p&gt;"</js>,<a name="line.733"></a>
+<span class="sourceLineNo">734</span> * <js>" &lt;p&gt;Provides examples of: &lt;/p&gt;"</js>,<a name="line.734"></a>
+<span class="sourceLineNo">735</span> * <js>" &lt;ul&gt;"</js>,<a name="line.735"></a>
+<span class="sourceLineNo">736</span> * <js>" &lt;li&gt;XML and RDF namespaces"</js>,<a name="line.736"></a>
+<span class="sourceLineNo">737</span> * <js>" &lt;li&gt;Swagger documentation"</js>,<a name="line.737"></a>
+<span class="sourceLineNo">738</span> * <js>" &lt;li&gt;Widgets"</js>,<a name="line.738"></a>
+<span class="sourceLineNo">739</span> * <js>" &lt;/ul&gt;"</js>,<a name="line.739"></a>
+<span class="sourceLineNo">740</span> * <js>" &lt;p style='text-weight:bold;text-decoration:underline;'&gt;Available Content Types&lt;/p&gt;"</js>,<a name="line.740"></a>
+<span class="sourceLineNo">741</span> * <js>" $W{ContentTypeLinks}"</js>,<a name="line.741"></a>
+<span class="sourceLineNo">742</span> * <js>"&lt;/div&gt;"</js><a name="line.742"></a>
+<span class="sourceLineNo">743</span> * },<a name="line.743"></a>
+<span class="sourceLineNo">744</span> * footer=<js>"$W{PoweredByJuneau}"</js><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> * </p><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> * <p><a name="line.754"></a>
+<span class="sourceLineNo">755</span> * This setting is useful if you want to use <js>"context:/child/path"</js> 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> * <p><a name="line.765"></a>
+<span class="sourceLineNo">766</span> * When enabled, headers such as <js>"Accept"</js> and <js>"Content-Type"</js> 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: <js>"?Accept=text/json&amp;Content-Type=text/json"</js><a name="line.768"></a>
+<span class="sourceLineNo">769</span> *<a name="line.769"></a>
+<span class="sourceLineNo">770</span> * <ul><a name="line.770"></a>
+<span class="sourceLineNo">771</span> * <li>Boolean value.<a name="line.771"></a>
+<span class="sourceLineNo">772</span> * <li>Defaults to system property <js>"juneau.allowHeaderParams"</js>, or <js>"true"</js> if not specified.<a name="line.772"></a>
+<span class="sourceLineNo">773</span> * <li>Can contain variables.<a name="line.773"></a>
+<span class="sourceLineNo">774</span> * <li>Parameter names are case-insensitive.<a name="line.774"></a>
+<span class="sourceLineNo">775</span> * <li>Useful for debugging REST interface using only a browser.<a name="line.775"></a>
+<span class="sourceLineNo">776</span> * </ul><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 <js>"method"</js> 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> * <p><a name="line.783"></a>
+<span class="sourceLineNo">784</span> * When specified, the HTTP method can be overridden by passing in a <js>"method"</js> 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: <js>"?method=OPTIONS"</js><a name="line.786"></a>
+<span class="sourceLineNo">787</span> *<a name="line.787"></a>
+<span class="sourceLineNo">788</span> * <p><a name="line.788"></a>
+<span class="sourceLineNo">789</span> * Example: <js>"HEAD,OPTIONS"</js><a name="line.789"></a>
+<span class="sourceLineNo">790</span> *<a name="line.790"></a>
+<span class="sourceLineNo">791</span> * <ul><a name="line.791"></a>
+<span class="sourceLineNo">792</span> * <li>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> * <li>Defaults to system property <js>"juneau.allowMethodParam"</js>, or <js>"HEAD,OPTIONS"</js> if not specified.<a name="line.793"></a>
+<span class="sourceLineNo">794</span> * <li>Can contain variables.<a name="line.794"></a>
+<span class="sourceLineNo">795</span> * <li>Parameter name is case-insensitive.<a name="line.795"></a>
+<span class="sourceLineNo">796</span> * <li>Use "*" to represent all methods.<a name="line.796"></a>
+<span class="sourceLineNo">797</span> * <li>For backwards compatibility, "true" also means "*".<a name="line.797"></a>
+<span class="sourceLineNo">798</span> * </ul><a name="line.798"></a>
+<span class="sourceLineNo">799</span> *<a name="line.799"></a>
+<span class="sourceLineNo">800</span> * <p><a name="line.800"></a>
+<span class="sourceLineNo">801</span> * Note that per the <a class="doclink"<a name="line.801"></a>
+<span class="sourceLineNo">802</span> * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html">HTTP specification</a>, 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 <js>"body"</js> URL parameter.<a name="line.808"></a>
+<span class="sourceLineNo">809</span> *<a name="line.809"></a>
+<span class="sourceLineNo">810</span> * <p><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 <js>"body"</js><a name="line.811"></a>
+<span class="sourceLineNo">812</span> * URL parameter.<a name="line.812"></a>
+<span class="sourceLineNo">813</span> * For example: <js>"?body={name:'John%20Smith',age:45}"</js><a name="line.813"></a>
+<span class="sourceLineNo">814</span> *<a name="line.814"></a>
+<span class="sourceLineNo">815</span> * <ul><a name="line.815"></a>
+<span class="sourceLineNo">816</span> * <li>Boolean value.<a name="line.816"></a>
+<span class="sourceLineNo">817</span> * <li>Defaults to system property <js>"juneau.allowBodyParam"</js>, or <js>"true"</js> if not specified.<a name="line.817"></a>
+<span class="sourceLineNo">818</span> * <li>Can contain variables.<a name="line.818"></a>
+<span class="sourceLineNo">819</span> * <li>Parameter name is case-insensitive.<a name="line.819"></a>
+<span class="sourceLineNo">820</span> * <li>Useful for debugging PUT and POST methods using only a browser.<a name="line.820"></a>
+<span class="sourceLineNo">821</span> * </ul><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> * <p><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> * <ul><a name="line.831"></a>
+<span class="sourceLineNo">832</span> * <li>Boolean value.<a name="line.832"></a>
+<span class="sourceLineNo">833</span> * <li>Defaults to system property <js>"juneau.renderResponseStackTraces"</js>, or <js>"false"</js> if not specified.<a name="line.833"></a>
+<span class="sourceLineNo">834</span> * <li>Can contain variables.<a name="line.834"></a>
+<span class="sourceLineNo">835</span> * <li>Useful for debugging, although allowing stack traces to be rendered may cause security concerns.<a name="line.835"></a>
+<span class="sourceLineNo">836</span> * </ul><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> * <p><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> * <ul><a name="line.847"></a>
+<span class="sourceLineNo">848</span> * <li>Boolean value.<a name="line.848"></a>
+<span class="sourceLineNo">849</span> * <li>Defaults to system property <js>"juneau.useStackTraceHashes"</js>, or <js>"true"</js> if not specified.<a name="line.849"></a>
+<span class="sourceLineNo">850</span> * <li>Can contain variables.<a name="line.850"></a>
+<span class="sourceLineNo">851</span> * </ul><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> * <p><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> * <ul><a name="line.861"></a>
+<span class="sourceLineNo">862</span> * <li>String value.<a name="line.862"></a>
+<span class="sourceLineNo">863</span> * <li>Defaults to system property <js>"juneau.defaultCharset"</js>, or <js>"utf-8"</js> if not specified.<a name="line.863"></a>
+<span class="sourceLineNo">864</span> * <li>Can contain variables.<a name="line.864"></a>
+<span class="sourceLineNo">865</span> * <li>Can be overridden at the method level using {@link RestMethod#defaultCharset() @RestMethod.defaultCharset()}.<a name="line.865"></a>
+<span class="sourceLineNo">866</span> * </ul><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> * <ul class='spaced-list'><a name="line.874"></a>
+<span class="sourceLineNo">875</span> * <li><a name="line.875"></a>
+<span class="sourceLineNo">876</span> * <js>"UON"</js> - URL-Encoded Object Notation.<a name="line.876"></a>
+<span class="sourceLineNo">877</span> * <br>This notation allows for request parameters to contain arbitrarily complex POJOs.<a name="line.877"></a>
+<span class="sourceLineNo">878</span> * <li><a name="line.878"></a>
+<span class="sourceLineNo">879</span> * <js>"PLAIN"</js> - Plain text.<a name="line.879"></a>
+<span class="sourceLineNo">880</span> * <br>This treats request parameters as plain text.<a name="line.880"></a>
+<span class="sourceLineNo">881</span> * <br>Only POJOs directly convertible from <l>Strings</l> 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> * </ul><a name="line.883"></a>
+<span class="sourceLineNo">884</span> *<a name="line.884"></a>
+<span class="sourceLineNo">885</span> * <p><a name="line.885"></a>
+<span class="sourceLineNo">886</span> * Note that the parameter value <js>"(foo)"</js> is interpreted as <js>"(foo)"</js> when using plain mode, but<a name="line.886"></a>
+<span class="sourceLineNo">887</span> * <js>"foo"</js> when using UON mode.<a name="line.887"></a>
+<span class="sourceLineNo">888</span> *<a name="line.888"></a>
+<span class="sourceLineNo">889</span> * <p><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> * <ul><a name="line.893"></a>
+<span class="sourceLineNo">894</span> * <li>String value.<a name="line.894"></a>
+<span class="sourceLineNo">895</span> * <li>Defaults to system property <js>"juneau.paramFormat"</js>, or <js>"UON"</js> if not specified.<a name="line.895"></a>
+<span class="sourceLineNo">896</span> * <li>Can contain variables.<a name="line.896"></a>
+<span class="sourceLineNo">897</span> * <li>Can be overridden at the method level using {@link RestMethod#paramFormat() @RestMethod.paramFormat()}.<a name="line.897"></a>
+<span class="sourceLineNo">898</span> * </ul><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> * <p><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> * <p><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> * <p class='bcode'><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> * </p><a name="line.39"></a>
-<span class="sourceLineNo">040</span> * <a name="line.40"></a>
-<span class="sourceLineNo">041</span> * <p><a name="line.41"></a>
-<span class="sourceLineNo">042</span> * Your microservice class must be specified as the <jk>Main-Class</jk> 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> * <h6 class='topic'>Microservice Configuration</h6><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> * <ul class='spaced-list'><a name="line.48"></a>
-<span class="sourceLineNo">049</span> * <li><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> * <li><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> * <p><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> * <p><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> * <p class='bcode'><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> * </p><a name="line.43"></a>
+<span class="sourceLineNo">044</span> * <a name="line.44"></a>
+<span class="sourceLineNo">045</span> * <p><a name="line.45"></a>
+<span class="sourceLineNo">046</span> * Your microservice class must be specified as the <jk>Main-Class</jk> 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> * <h6 class='topic'>Microservice Configuration</h6><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> * <ul class='spaced-list'><a name="line.52"></a>
<span class="sourceLineNo">053</span> * <li><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> * </ul><a name="line.55"></a>
-<span class="sourceLineNo">056</span> *<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * <h6 class='topic'>Entry point Method</h6><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> * <p class='bcode'><a name="line.61"></a>
-<span class="sourceLineNo">062</span> * <jk>public static void</jk> main(String[] args) <jk>throws</jk> Exception {<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * <jk>new</jk> MyMicroservice(args).start();<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * }<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * </p><a name="line.65"></a>
-<span class="sourceLineNo">066</span> *<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * <h6 class='topic'>Lifecycle Methods</h6><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> * <ul class='spaced-list'><a name="line.70"></a>
-<span class="sourceLineNo">071</span> * <li><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> * <li><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> * <li><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> * <li><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> * </ul><a name="line.59"></a>
+<span class="sourceLineNo">060</span> *<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * <h6 class='topic'>Entry point Method</h6><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> * <p class='bcode'><a name="line.65"></a>
+<span class="sourceLineNo">066</span> * <jk>public static void</jk> main(String[] args) <jk>throws</jk> Exception {<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * <jk>new</jk> MyMicroservice(args).start();<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * }<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * </p><a name="line.69"></a>
+<span class="sourceLineNo">070</span> *<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * <h6 class='topic'>Lifecycle Methods</h6><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> * <ul class='spaced-list'><a name="line.74"></a>
<span class="sourceLineNo">075</span> * <li><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> * </ul><a name="line.77"></a>
-<span class="sourceLineNo">078</span> *<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * <h6 class='topic'>Lifecycle Listener Methods</h6><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> * <ul class='spaced-list'><a name="line.82"></a>
-<span class="sourceLineNo">083</span> * <li><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> * <li><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> * <li><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> * <li><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> * </ul><a name="line.81"></a>
+<span class="sourceLineNo">082</span> *<a name="line.82"></a>
+<span class="sourceLineNo">083</span> * <h6 class='topic'>Lifecycle Listener Methods</h6><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> * <ul class='spaced-list'><a name="line.86"></a>
<span class="sourceLineNo">087</span> * <li><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> * <li><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> * </ul><a name="line.91"></a>
-<span class="sourceLineNo">092</span> *<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * <h6 class='topic'>Other Methods</h6><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> * <ul class='spaced-list'><a name="line.96"></a>
-<span class="sourceLineNo">097</span> * <li><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> * </ul><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> * <li><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> * <li><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> * </ul><a name="line.95"></a>
+<span class="sourceLineNo">096</span> *<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * <h6 class='topic'>Other Methods</h6><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> * <ul class='spaced-list'><a name="line.100"></a>
+<span class="sourceLineNo">101</span> * <li><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> * </ul><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> * <p><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> * <ol><a name="line.125"></a>
-<span class="sourceLineNo">126</span> * <li>The first argument in the command line arguments passed in through the constructor.<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * <li>The value of the <code>Main-ConfigFile</code> entry in the manifest file.<a name="line.127"></a>
-<span class="sourceLineNo">128</span> * <li>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. <js>"java -jar myjar.jar"</js> will look for <js>"myjar.cfg"</js>).<a name="line.129"></a>
-<span class="sourceLineNo">130</span> * </ol><a name="line.130"></a>
-<span class="sourceLineNo">131</span> * <a name="line.131"></a>
-<span class="sourceLineNo">132</span> * <p><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> * <p><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 <jk>null</jk> 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> * <p><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 <jk>null</jk> 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> * <p><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> * <ol><a name="line.170"></a>
-<span class="sourceLineNo">171</span> * <li>Looking on the file system for a file at <js>"META-INF/MANIFEST.MF"</js>.<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> * <li>Using the class loader for this class to find the file at the URL <js>"META-INF/MANIFEST.MF"</js>.<a name="line.174"></a>
-<span class="sourceLineNo">175</span> * </ol><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<?> 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> * <p><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> * <ul><a name="line.222"></a>
-<span class="sourceLineNo">223</span> * <li><code>$S{key}</code>, <code>$S{key,default}</code> - System properties.<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * <li><code>$E{key}</code>, <code>$E{key,default}</code> - Environment variables.<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * <li><code>$C{key}</code>, <code>$C{key,default}</code> - Config file entries.<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * <li><code>$MF{key}</code>, <code>$MF{key,default}</code> - Manifest file entries.<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * <li><code>$ARG{key}</code>, <code>$ARG{key,default}</code> - Command-line arguments.<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * <li><code>$IF{boolArg,thenValue}</code>, <code>$IF{boolArg,thenValue,elseValue}</code> - If-block logic.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> * <li><code>$SW{stringArg,pattern,thenVal...}</code>, <a name="line.229"></a>
-<span class="sourceLineNo">230</span> * <code>$SW{stringArg,pattern,thenVal,elseVal...}</code> - Switch-block logic.<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * </ul><a name="line.231"></a>
-<span class="sourceLineNo">232</span> * <a name="line.232"></a>
-<span class="sourceLineNo">233</span> * <p><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> * <h5 class='section'>Example:</h5><a name="line.236"></a>
-<span class="sourceLineNo">237</span> * <p class='bcode'><a name="line.237"></a>
-<span class="sourceLineNo">238</span> * <jd>/**<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> * * /</jd><a name="line.240"></a>
-<span class="sourceLineNo">241</span> * <ja>@Override</ja> <jc>// Microservice</jc><a name="line.241"></a>
-<span class="sourceLineNo">242</span> * <jk>protected</jk> StringVarResolver createVarResolver() {<a name="line.242"></a>
-<span class="sourceLineNo">243</span> * <jk>return super</jk>.createVarResolver()<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * .addVar(<js>"B"</js>,<a name="line.244"></a>
-<span class="sourceLineNo">245</span> * <jk>new</jk> StringVarWithDefault() {<a name="line.245"></a>
-<span class="sourceLineNo">246</span> * <ja>@Override</ja> <jc>// StringVar</jc><a name="line.246"></a>
-<span class="sourceLineNo">247</span> * <jk>public</jk> String resolve(String varVal) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span> * <jk>return</jk> <js>'['</js> + varVal + <js>']'</js>;<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> * </p><a name="line.253"></a>
-<span class="sourceLineNo">254</span> * <p class='bcode'><a name="line.254"></a>
-<span class="sourceLineNo">255</span> * <cc># Example config file</cc><a name="line.255"></a>
-<span class="sourceLineNo">256</span> * <cs>[MySection]</cs><a name="line.256"></a>
-<span class="sourceLineNo">257</span> * <ck>myEntry</ck> = $B{foo}<a name="line.257"></a>
-<span class="sourceLineNo">258</span> * </p><a name="line.258"></a>
-<span class="sourceLineNo">259</span> * <p class='bcode'><a name="line.259"></a>
-<span class="sourceLineNo">260</span> * <jc>// Example java code</jc><a name="line.260"></a>
-<span class="sourceLineNo">261</span> * String myentry = getConfig().getString(<js>"MySection/myEntry"</js>); <jc>// == "[foo]"</js><a name="line.261"></a>
-<span class="sourceLineNo">262</span> * </p><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> * <p><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> * <p><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> * <p><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> * <ol class='spaced-list'><a name="line.297"></a>
-<span class="sourceLineNo">298</span> * <li><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> * <li><a name="line.300"></a>
-<span class="sourceLineNo">301</span> * The <code>Main-ConfigFile</code> entry in the microservice jar manifest file.<a name="line.301"></a>
-<span class="sourceLineNo">302</span> * <li><a name="line.302"></a>
-<span class="sourceLineNo">303</span> * The name of the microservice jar with a <js>".cfg"</js> suffix (e.g. <a name="line.303"></a>
-<span class="sourceLineNo">304</span> * <js>"mymicroservice.jar"</js>-&gt;<js>"mymicroservice.cfg"</js>).<a name="line.304"></a>
-<span class="sourceLineNo">305</span> * </ol><a name="line.305"></a>
-<span class="sourceLineNo">306</span> * <a name="line.306"></a>
-<span class="sourceLineNo">307</span> * <p><a name="line.307"></a>
-<span class="sourceLineNo">308</span> * If all methods for locating the config file fail, then this method returns <jk>null</jk>.<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> * <p><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> * <ol><a name="line.155"></a>
+<span class="sourceLineNo">156</span> * <li>The first argument in the command line arguments passed in through the constructor.<a name="line.156"></a>
+<span class="sourceLineNo">157</span> * <li>The value of the <code>Main-ConfigFile</code> entry in the manifest file.<a name="line.157"></a>
+<span class="sourceLineNo">158</span> * <li>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. <js>"java -jar myjar.jar"</js> will look for <js>"myjar.cfg"</js>).<a name="line.159"></a>
+<span class="sourceLineNo">160</span> * </ol><a name="line.160"></a>
+<span class="sourceLineNo">161</span> * <a name="line.161"></a>
+<span class="sourceLineNo">162</span> * <p><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> * <p><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 <jk>null</jk> 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> * <p><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> * <ol><a name="line.200"></a>
+<span class="sourceLineNo">201</span> * <li>Looking on the file system for a file at <js>"META-INF/MANIFEST.MF"</js>.<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> * <li>Using the class loader for this class to find the file at the URL <js>"META-INF/MANIFEST.MF"</js>.<a name="line.204"></a>
+<span class="sourceLineNo">205</span> * </ol><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<?> 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> * <p><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> * <ul><a name="line.252"></a>
+<span class="sourceLineNo">253</span> * <li><code>$S{key}</code>, <code>$S{key,default}</code> - System properties.<a name="line.253"></a>
+<span class="sourceLineNo">254</span> * <li><code>$E{key}</code>, <code>$E{key,default}</code> - Environment variables.<a name="line.254"></a>
+<span class="sourceLineNo">255</span> * <li><code>$C{key}</code>, <code>$C{key,default}</code> - Config file entries.<a name="line.255"></a>
+<span class="sourceLineNo">256</span> * <li><code>$MF{key}</code>, <code>$MF{key,default}</code> - Manifest file entries.<a name="line.256"></a>
+<span class="sourceLineNo">257</span> * <li><code>$ARG{key}</code>, <code>$ARG{key,default}</code> - Command-line arguments.<a name="line.257"></a>
+<span class="sourceLineNo">258</span> * <li><code>$IF{boolArg,thenValue}</code>, <code>$IF{boolArg,thenValue,elseValue}</code> - If-block logic.<a name="line.258"></a>
+<span class="sourceLineNo">259</span> * <li><code>$SW{stringArg,pattern,thenVal...}</code>, <a name="line.259"></a>
+<span class="sourceLineNo">260</span> * <code>$SW{stringArg,pattern,thenVal,elseVal...}</code> - Switch-block logic.<a name="line.260"></a>
+<span class="sourceLineNo">261</span> * </ul><a name="line.261"></a>
+<span class="sourceLineNo">262</span> * <a name="line.262"></a>
+<span class="sourceLineNo">263</span> * <p><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> * <h5 class='section'>Example:</h5><a name="line.266"></a>
+<span class="sourceLineNo">267</span> * <p class='bcode'><a name="line.267"></a>
+<span class="sourceLineNo">268</span> * <jd>/**<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> * * /</jd><a name="line.270"></a>
+<span class="sourceLineNo">271</span> * <ja>@Override</ja> <jc>// Microservice</jc><a name="line.271"></a>
+<span class="sourceLineNo">272</span> * <jk>protected</jk> StringVarResolver createVarResolver() {<a name="line.272"></a>
+<span class="sourceLineNo">273</span> * <jk>return super</jk>.createVarResolver()<a name="line.273"></a>
+<span class="sourceLineNo">274</span> * .addVar(<js>"B"</js>,<a name="line.274"></a>
+<span class="sourceLineNo">275</span> * <jk>new</jk> StringVarWithDefault() {<a name="line.275"></a>
+<span class="sourceLineNo">276</span> * <ja>@Override</ja> <jc>// StringVar</jc><a name="line.276"></a>
+<span class="sourceLineNo">277</span> * <jk>public</jk> String resolve(String varVal) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span> * <jk>return</jk> <js>'['</js> + varVal + <js>']'</js>;<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> * </p><a name="line.283"></a>
+<span class="sourceLineNo">284</span> * <p class='bcode'><a name="line.284"></a>
+<span class="sourceLineNo">285</span> * <cc># Example config file</cc><a name="line.285"></a>
+<span class="sourceLineNo">286</span> * <cs>[MySection]</cs><a name="line.286"></a>
+<span class="sourceLineNo">287</span> * <ck>myEntry</ck> = $B{foo}<a name="line.287"></a>
+<span class="sourceLineNo">288</span> * </p><a name="line.288"></a>
+<span class="sourceLineNo">289</span> * <p class='bcode'><a name="line.289"></a>
+<span class="sourceLineNo">290</span> * <jc>// Example java code</jc><a name="line.290"></a>
+<span class="sourceLineNo">291</span> * String myentry = getConfig().getString(<js>"MySection/myEntry"</js>); <jc>// == "[foo]"</js><a name="line.291"></a>
+<span class="sourceLineNo">292</span> * </p><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> * <p><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> * <p><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> * <p><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> * <h5 class='section'>Example:</h5><a name="line.319"></a>
-<span class="sourceLineNo">320</span> * <p class='bcode'><a name="line.320"></a>
-<span class="sourceLineNo">321</span> * <cc>#--------------------------</cc><a name="line.321"></a>
-<span class="sourceLineNo">322</span> * <cc># My section</cc><a name="line.322"></a>
-<span class="sourceLineNo">323</span> * <cc>#--------------------------</cc><a name="line.323"></a>
-<span class="sourceLineNo">324</span> * <cs>[MySection]</cs><a name="line.324"></a>
-<span class="sourceLineNo">325</span> *<a name="line.325"></a>
-<span class="sourceLineNo">326</span> * <cc># An integer</cc><a name="line.326"></a>
-<span class="sourceLineNo">327</span> * <ck>anInt</ck> = 1<a name="line.327"></a>
-<span class="sourceLineNo">328</span> *<a name="line.328"></a>
-<span class="sourceLineNo">329</span> * <cc># A boolean</cc><a name="line.329"></a>
-<span class="sourceLineNo">330</span> * <ck>aBoolean</ck> = true<a name="line.330"></a>
-<span class="sourceLineNo">331</span> *<a name="line.331"></a>
-<span class="sourceLineNo">332</span> * <cc># An int array</cc><a name="line.332"></a>
-<span class="sourceLineNo">333</span> * <ck>anIntArray</ck> = 1,2,3<a name="line.333"></a>
-<span class="sourceLineNo">334</span> *<a name="line.334"></a>
-<span class="sourceLineNo">335</span> * <cc># A POJO that can be converted from a String</cc><a name="line.335"></a>
-<span class="sourceLineNo">336</span> * <ck>aURL</ck> = http://foo<a name="line.336"></a>
-<span class="sourceLineNo">337</span> *<a name="line.337"></a>
-<span class="sourceLineNo">338</span> * <cc># A POJO that can be converted from JSON</cc><a name="line.338"></a>
-<span class="sourceLineNo">339</span> * <ck>aBean</ck> = {foo:'bar',baz:123}<a name="line.339"></a>
-<span class="sourceLineNo">340</span> *<a name="line.340"></a>
-<span class="sourceLineNo">341</span> * <cc># A system property</cc><a name="line.341"></a>
-<span class="sourceLineNo">342</span> * <ck>locale</ck> = $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> * <cc># An environment variable</cc><a name="line.344"></a>
-<span class="sourceLineNo">345</span> * <ck>path</ck> = $E{PATH, unknown}<a name="line.345"></a>
-<span class="sourceLineNo">346</span> *<a name="line.346"></a>
-<span class="sourceLineNo">347</span> * <cc># A manifest file entry</cc><a name="line.347"></a>
-<span class="sourceLineNo">348</span> * <ck>mainClass</ck> = $MF{Main-Class}<a name="line.348"></a>
-<span class="sourceLineNo">349</span> *<a name="line.349"></a>
-<span class="sourceLineNo">350</span> * <cc># Another value in this config file</cc><a name="line.350"></a>
-<span class="sourceLineNo">351</span> * <ck>sameAsAnInt</ck> = $C{MySection/anInt}<a name="line.351"></a>
-<span class="sourceLineNo">352</span> *<a name="line.352"></a>
-<span class="sourceLineNo">353</span> * <cc># A command-line argument in the form "myarg=foo"</cc><a name="line.353"></a>
-<span class="sourceLineNo">354</span> * <ck>myArg</ck> = $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> * <p><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> * <ol class='spaced-list'><a name="line.327"></a>
+<span class="sourceLineNo">328</span> * <li><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> * <li><a name="line.330"></a>
+<span class="sourceLineNo">331</span> * The <code>Main-ConfigFile</code> entry in the microservice jar manifest file.<a name="line.331"></a>
+<span class="sourceLineNo">332</span> * <li><a name="line.332"></a>
+<span class="sourceLineNo">333</span> * The name of the microservice jar with a <js>".cfg"</js> suffix (e.g. <a name="line.333"></a>
+<span class="sourceLineNo">334</span> * <js>"mymicroservice.jar"</js>-&gt;<js>"mymicroservice.cfg"</js>).<a name="line.334"></a>
+<span class="sourceLineNo">335</span> * </ol><a name="line.335"></a>
+<span class="sourceLineNo">336</span> * <a name="line.336"></a>
+<span class="sourceLineNo">337</span> * <p><a name="line.337"></a>
+<span class="sourceLineNo">338</span> * If all methods for locating the config file fail, then this method returns <jk>null</jk>.<a name="line.338"></a>
+<span class="sourceLineNo">339</span> * <a name="line.339"></a>
+<span class="sourceLineNo">340</span> * <p><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> * <p><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> * <p><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> * <h5 class='section'>Example:</h5><a name="line.349"></a>
+<span class="sourceLineNo">350</span> * <p class='bcode'><a name="line.350"></a>
+<span class="sourceLineNo">351</span> * <cc>#--------------------------</cc><a name="line.351"></a>
+<span class="sourceLineNo">352</span> * <cc># My section</cc><a name="line.352"></a>
+<span class="sourceLineNo">353</span> * <cc>#--------------------------</cc><a name="line.353"></a>
+<span class="sourceLineNo">354</span> * <cs>[MySection]</cs><a name="line.354"></a>
<span class="sourceLineNo">355</span> *<a name="line.355"></a>
-<span class="sourceLineNo">356</span> * <cc># The first command-line argument</cc><a name="line.356"></a>
-<span class="sourceLineNo">357</span> * <ck>firstArg</ck> = $ARG{0}<a name="line.357"></a>
+<span class="sourceLineNo">356</span> * <cc># An integer</cc><a name="line.356"></a>
+<span class="sourceLineNo">357</span> * <ck>anInt</ck> = 1<a name="line.357"></a>
<span class="sourceLineNo">358</span> *<a name="line.358"></a>
-<span class="sourceLineNo">359</span> * <cc># Look for system property, or env var if that doesn't exist, or command-line arg if that doesn't exist.</cc><a name="line.359"></a>
-<span class="sourceLineNo">360</span> * <ck>nested</ck> = $S{mySystemProperty,$E{MY_ENV_VAR,$ARG{0}}}<a name="line.360"></a>
+<span class="sourceLineNo">359</span> * <cc># A boolean</cc><a name="line.359"></a>
+<span class="sourceLineNo">360</span> * <ck>aBoolean</ck> = true<a name="line.360"></a>
<span class="sourceLineNo">361</span> *<a name="line.361"></a>
-<span class="sourceLineNo">362</span> * <cc># A POJO with embedded variables</cc><a name="line.362"></a>
-<span class="sourceLineNo">363</span> * <ck>aBean2</ck> = {foo:'$ARG{0}',baz:$C{MySection/anInt}}<a name="line.363"></a>
-<span class="sourceLineNo">364</span> * </p><a name="line.364"></a>
-<span class="sourceLineNo">365</span> * <a name="line.365"></a>
-<span class="sourceLineNo">366</span> * <p class='bcode'><a name="line.366"></a>
-<span class="sourceLineNo">367</span> * <jc>// Java code for accessing config entries above.</jc><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> * <jk>int</jk> anInt = cf.getInt(<js>"MySection/anInt"</js>);<a name="line.370"></a>
-<span class="sourceLineNo">371</span> * <jk>boolean</jk> aBoolean = cf.getBoolean(<js>"MySection/aBoolean"</js>);<a name="line.371"></a>
-<span class="sourceLineNo">372</span> * <jk>int</jk>[] anIntArray = cf.getObject(<jk>int</jk>[].<jk>class</jk>, <js>"MySection/anIntArray"</js>);<a name="line.372"></a>
-<span class="sourceLineNo">373</span> * URL aURL = cf.getObject(URL.<jk>class</jk>, <js>"MySection/aURL"</js>);<a name="line.373"></a>
-<span class="sourceLineNo">374</span> * MyBean aBean = cf.getObject(MyBean.<jk>class</jk>, <js>"MySection/aBean"</js>);<a name="line.374"></a>
-<span class="sourceLineNo">375</span> * Locale locale = cf.getObject(Locale.<jk>class</jk>, <js>"MySection/locale"</js>);<a name="line.375"></a>
-<span class="sourceLineNo">376</span> * String path = cf.getString(<js>"MySection/path"</js>);<a name="line.376"></a>
-<span class="sourceLineNo">377</span> * String mainClass = cf.getString(<js>"MySection/mainClass"</js>);<a name="line.377"></a>
-<span class="sourceLineNo">378</span> * <jk>int</jk> sameAsAnInt = cf.getInt(<js>"MySection/sameAsAnInt"</js>);<a name="line.378"></a>
-<span class="sourceLineNo">379</span> * String myArg = cf.getString(<js>"MySection/myArg"</js>);<a name="line.379"></a>
-<span class="sourceLineNo">380</span> * String firstArg = cf.getString(<js>"MySection/firstArg"</js>);<a name="line.380"></a>
-<span class="sourceLineNo">381</span> * </p><a name="line.381"></a>
+<span class="sourceLineNo">362</span> * <cc># An int array</cc><a name="line.362"></a>
+<span class="sourceLineNo">363</span> * <ck>anIntArray</ck> = 1,2,3<a name="line.363"></a>
+<span class="sourceLineNo">364</span> *<a name="line.364"></a>
+<span class="sourceLineNo">365</span> * <cc># A POJO that can be converted from a String</cc><a name="line.365"></a>
+<span class="sourceLineNo">366</span> * <ck>aURL</ck> = http://foo<a name="line.366"></a>
+<span class="sourceLineNo">367</span> *<a name="line.367"></a>
+<span class="sourceLineNo">368</span> * <cc># A POJO that can be converted from JSON</cc><a name="line.368"></a>
+<span class="sourceLineNo">369</span> * <ck>aBean</ck> = {foo:'bar',baz:123}<a name="line.369"></a>
+<span class="sourceLineNo">370</span> *<a name="line.370"></a>
+<span class="sourceLineNo">371</span> * <cc># A system property</cc><a name="line.371"></a>
+<span class="sourceLineNo">372</span> * <ck>locale</ck> = $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> * <cc># An environment variable</cc><a name="line.374"></a>
+<span class="sourceLineNo">375</span> * <ck>path</ck> = $E{PATH, unknown}<a name="line.375"></a>
+<span class="sourceLineNo">376</span> *<a name="line.376"></a>
+<span class="sourceLineNo">377</span> * <cc># A manifest file entry</cc><a name="line.377"></a>
+<span class="sourceLineNo">378</span> * <ck>mainClass</ck> = $MF{Main-Class}<a name="line.378"></a>
+<span class="sourceLineNo">379</span> *<a name="line.379"></a>
+<span class="sourceLineNo">380</span> * <cc># Another value in this config file</cc><a name="line.380"></a>
+<span class="sourceLineNo">381</span> * <ck>sameAsAnInt</ck> = $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 <jk>null</jk> 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> * <p><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> * <p><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> * <h5 class='section'>Example:</h5><a name="line.398"></a>
-<span class="sourceLineNo">399</span> * <p class='bcode'><a name="line.399"></a>
-<span class="sourceLineNo">400</span> * <jc>// Get Main-Class from manifest file.</jc><a name="line.400"></a>
-<span class="sourceLineNo">401</span> * String mainClass = Microservice.<jsm>getManifest</jsm>().getString(<js>"Main-Class"</js>, <js>"unknown"</js>);<a name="line.401"></a>
-<span class="sourceLineNo">402</span> *<a name="line.402"></a>
-<span class="sourceLineNo">403</span> * <jc>// Get Rest-Resources from manifest file.</jc><a name="line.403"></a>
-<span class="sourceLineNo">404</span> * String[] restResources = Microservice.<jsm>getManifest</jsm>().getStringArray(<js>"Rest-Resources"</js>);<a name="line.404"></a>
-<span class="sourceLineNo">405</span> * </p><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 <jk>null</jk> 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> * <p><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> * <p><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<String> 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<String> 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 <a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.43">RestException</a>(int status,
+<pre>public <a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.44">RestException</a>(int 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> 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>... 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 <a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.54">RestException</a>(int status,
+<pre>public <a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.55">RestException</a>(int 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> 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 <a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a> <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> cause)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a> <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> 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 <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> <a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.84">getRootCause</a>()</pre>
+<pre>public <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> <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 <a href="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/RestException.html#line.105">getFullStackMessage</a>(boolean scrubForXssVulnerabilities)</pre>
+<pre>public <a href="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/RestException.html#line.106">getFullStackMessage</a>(boolean 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 int <a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.129">hashCode</a>()</pre>
+<pre>public int <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> in class <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 int <a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.153">getOccurrence</a>()</pre>
+<pre>public int <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 int <a href="../../../../src-html/org/apache/juneau/rest/RestException.html#line.162">getStatus</a>()</pre>
+<pre>public int <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 <a href="../../../../src-html/org/apache/juneau/rest/RestServletDefault.html#line.207">RestServletDefault</a>()</pre>
+<pre>public <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 <a href="../../../../org/apache/juneau/dto/swagger/Swagger.html" title="class in org.apache.juneau.dto.swagger">Swagger</a> <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> req)</pre>
+public <a href="../../../../org/apache/juneau/dto/swagger/Swagger.html" title="class in org.apache.juneau.dto.swagger">Swagger</a> <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> 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><? extends <a href="../../../../../org/apache/juneau/encoders/Encoder.html" title="class in org.apache.juneau.encoders">Encoder</a>>[]</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><? extends <a href="../../../../../org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a>>[]</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><? extends <a href="../../../../../org/apache/juneau/rest/RestMatcher.html" title="class in org.apache.juneau.rest">RestMatcher</a>>[]</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><? extends <a href="../../../../../org/apache/juneau/parser/Parser.html" title="class in org.apache.juneau.parser">Parser</a>>[]</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 <a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation">HtmlDoc</a> <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 <a href="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/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 <a href="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/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><?>[]</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><? extends <a href="../../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a>></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><?>[]</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><? extends <a href="../../../../../org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest">RestConverter</a>>[]</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><? extends <a href="../../../../../org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest">RestParam</a>>[]</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><? extends <a href="../../../../../org/apache/juneau/parser/ParserListener.html" title="class in org.apache.juneau.parser">ParserListener</a>></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><? extends <a href="../../../../../org/apache/juneau/parser/Parser.html" title="class in org.apache.juneau.parser">Parser</a>>[]</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><?>[]</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><? extends <a href="../../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>></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 <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><? extends <a href="../../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.634">resourceResolver</a></pre>
+<pre>public abstract <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><? extends <a href="../../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>> <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 <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><? extends <a href="../../../../../org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a>> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.647">logger</a></pre>
+<pre>public abstract <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><? extends <a href="../../../../../org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a>> <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 <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><? extends <a href="../../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a>> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.660">callHandler</a></pre>
+<pre>public abstract <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><? extends <a href="../../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a>> <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 <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><? extends <a href="../../../../../org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a>> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.672">infoProvider</a></pre>
+<pre>public abstract <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><? extends <a href="../../../../../org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a>> <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 <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><? extends <a href="../../../../../org/apache/juneau/serializer/SerializerListener.html" title="class in org.apache.juneau.serializer">SerializerListener</a>> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.677">serializerListener</a></pre>
+<pre>public abstract <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><? extends <a href="../../../../../org/apache/juneau/serializer/SerializerListener.html" title="class in org.apache.juneau.serializer">SerializerListener</a>> <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 <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><? extends <a href="../../../../../org/apache/juneau/parser/ParserListener.html" title="class in org.apache.juneau.parser">ParserListener</a>> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.682">parserListener</a></pre>
+<pre>public abstract <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><? extends <a href="../../../../../org/apache/juneau/parser/ParserListener.html" title="class in org.apache.juneau.parser">ParserListener</a>> <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 <a href="../../../../../org/apache/juneau/rest/annotation/ResourceSwagger.html" title="annotation in org.apache.juneau.rest.annotation">ResourceSwagger</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.707">swagger</a></pre>
+<pre>public abstract <a href="../../../../../org/apache/juneau/rest/annotation/ResourceSwagger.html" title="annotation in org.apache.juneau.rest.annotation">ResourceSwagger</a> <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 <a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation">HtmlDoc</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestResource.html#line.751">htmldoc</a></pre>
+<pre>public abstract <a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation">HtmlDoc</a> <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 <a href="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/annotation/RestResource.html#line.762">contextPath</a></pre>
+<pre>public abstract <a href="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/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 <a href="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/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&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 <a href="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/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 <a href="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/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 <a href="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/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 <a href="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/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 <a href="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/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 <a href="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/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 &method parameter on BAR requests</jc>
- <ja>@Property</ja>(name=<jsf>REST_allowMethodParam</jsf>, value=<js>"BAR"</js>)
- },
+ <jc>// Allow &method parameter on BAR requests</jc>
+ allowMethodParam=<js>"BAR"</js>
)
</p>
</div>
@@ -3433,21 +3431,21 @@
<td class='code'>&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'>&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'>&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'>
- <<xt>dependency</xt>>
- <<xt>groupId</xt>>org.apache.juneau<<xt>/groupId</xt>>
- <<xt>artifactId</xt>>juneau-marshall<<xt>/artifactId</xt>>
- <<xt>version</xt>>6.4.0-incubating<<xt>/version</xt>>
- <<xt>/dependency</xt>>
+ <p class='bcode' style='width:500px;'>
+ <xt><dependency></xt>
+ <xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
+ <xt><artifactId></xt>juneau-marshall<xt></artifactId></xt>
+ <xt><version></xt>6.4.0-incubating<xt></version></xt>
+ <xt></dependency></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'>
- <<xt>dependency</xt>>
- <<xt>groupId</xt>>org.apache.juneau<<xt>/groupId</xt>>
- <<xt>artifactId</xt>>juneau-marshall-rdf<<xt>/artifactId</xt>>
- <<xt>version</xt>>6.4.0-incubating<<xt>/version</xt>>
- <<xt>/dependency</xt>>
+ <p class='bcode' style='width:500px;'>
+ <xt><dependency></xt>
+ <xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
+ <xt><artifactId></xt>juneau-marshall-rdf<xt></artifactId></xt>
+ <xt><version></xt>6.4.0-incubating<xt></version></xt>
+ <xt></dependency></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'>
- <<xt>dependency</xt>>
- <<xt>groupId</xt>>org.apache.juneau<<xt>/groupId</xt>>
- <<xt>artifactId</xt>>juneau-dto<<xt>/artifactId</xt>>
- <<xt>version</xt>>6.4.0-incubating<<xt>/version</xt>>
- <<xt>/dependency</xt>>
+ <p class='bcode' style='width:500px;'>
+ <xt><dependency></xt>
+ <xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
+ <xt><artifactId></xt>juneau-dto<xt></artifactId></xt>
+ <xt><version></xt>6.4.0-incubating<xt></version></xt>
+ <xt></dependency></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'>
- <<xt>dependency</xt>>
- <<xt>groupId</xt>>org.apache.juneau<<xt>/groupId</xt>>
- <<xt>artifactId</xt>>juneau-svl<<xt>/artifactId</xt>>
- <<xt>version</xt>>6.4.0-incubating<<xt>/version</xt>>
- <<xt>/dependency</xt>>
+ <p class='bcode' style='width:500px;'>
+ <xt><dependency></xt>
+ <xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
+ <xt><artifactId></xt>juneau-svl<xt></artifactId></xt>
+ <xt><version></xt>6.4.0-incubating<xt></version></xt>
+ <xt></dependency></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'>
- <<xt>dependency</xt>>
- <<xt>groupId</xt>>org.apache.juneau<<xt>/groupId</xt>>
- <<xt>artifactId</xt>>juneau-config<<xt>/artifactId</xt>>
- <<xt>version</xt>>6.4.0-incubating<<xt>/version</xt>>
- <<xt>/dependency</xt>>
+ <p class='bcode' style='width:500px;'>
+ <xt><dependency></xt>
+ <xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
+ <xt><artifactId></xt>juneau-config<xt></artifactId></xt>
+ <xt><version></xt>6.4.0-incubating<xt></version></xt>
+ <xt></dependency></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'>
- <<xt>dependency</xt>>
- <<xt>groupId</xt>>org.apache.juneau<<xt>/groupId</xt>>
- <<xt>artifactId</xt>>juneau-rest-server<<xt>/artifactId</xt>>
- <<xt>version</xt>>6.4.0-incubating<<xt>/version</xt>>
- <<xt>/dependency</xt>>
+ <p class='bcode' style='width:500px;'>
+ <xt><dependency></xt>
+ <xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
+ <xt><artifactId></xt>juneau-rest-server<xt></artifactId></xt>
+ <xt><version></xt>6.4.0-incubating<xt></version></xt>
+ <xt></dependency></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'>
- <<xt>dependency</xt>>
- <<xt>groupId</xt>>org.apache.juneau<<xt>/groupId</xt>>
- <<xt>artifactId</xt>>juneau-rest-server-jaxrs<<xt>/artifactId</xt>>
- <<xt>version</xt>>6.4.0-incubating<<xt>/version</xt>>
- <<xt>/dependency</xt>>
+ <p class='bcode' style='width:500px;'>
+ <xt><dependency></xt>
+ <xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
+ <xt><artifactId></xt>juneau-rest-server-jaxrs<xt></artifactId></xt>
+ <xt><version></xt>6.4.0-incubating<xt></version></xt>
+ <xt></dependency></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'>
- <<xt>dependency</xt>>
- <<xt>groupId</xt>>org.apache.juneau<<xt>/groupId</xt>>
- <<xt>artifactId</xt>>juneau-rest-client<<xt>/artifactId</xt>>
- <<xt>version</xt>>6.4.0-incubating<<xt>/version</xt>>
- <<xt>/dependency</xt>>
+ <p class='bcode' style='width:500px;'>
+ <xt><dependency></xt>
+ <xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
+ <xt><artifactId></xt>juneau-rest-client<xt></artifactId></xt>
+ <xt><version></xt>6.4.0-incubating<xt></version></xt>
+ <xt></dependency></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'>
- <<xt>dependency</xt>>
- <<xt>groupId</xt>>org.apache.juneau<<xt>/groupId</xt>>
- <<xt>artifactId</xt>>juneau-microservice-server<<xt>/artifactId</xt>>
- <<xt>version</xt>>6.4.0-incubating<<xt>/version</xt>>
- <<xt>/dependency</xt>>
+ <p class='bcode' style='width:500px;'>
+ <xt><dependency></xt>
+ <xt><groupId></xt>org.apache.juneau<xt></groupId></xt>
+ <xt><artifactId></xt>juneau-microservice-server<xt></artifactId></xt>
+ <xt><version></xt>6.4.0-incubating<xt></version></xt>
+ <xt></dependency></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 <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> f,
+<pre>public <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> 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> 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 <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> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.296">getUrl</a>()</pre>
+<pre>public <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> <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 <a href="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/DirectoryResource.FileResource.html#line.303">getType</a>()</pre>
+<pre>public <a href="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/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 <a href="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/DirectoryResource.FileResource.html#line.310">getName</a>()</pre>
+<pre>public <a href="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/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 long <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.317">getSize</a>()</pre>
+<pre>public long <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 <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/DirectoryResource.FileResource.html#line.325">getLastModified</a>()</pre>
+public <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/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 <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 <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> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.333">getView</a>()
+<pre>public <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> <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 <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 <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> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.343">getDownload</a>()
+<pre>public <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> <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 <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 <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> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#line.353">getDelete</a>()
+<pre>public <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> <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 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 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 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 <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.78">DirectoryResource</a>()</pre>
+<pre>public <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 void <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.89">init</a>()
+<pre>public void <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 <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> <a href="../../../../../src-html/org/apache/juneau/microservice/resources/DirectoryResource.html#line.105">getRootDir</a>()</pre>
+<pre>protected <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> <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 <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/DirectoryResource.html#line.127">doGet</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req)
+public <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/DirectoryResource.html#line.126">doGet</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> 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 <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 <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/DirectoryResource.html#line.163">doDelete</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req)
+public <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/DirectoryResource.html#line.162">doDelete</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> 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 <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 <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/DirectoryResource.html#line.184">doPut</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req)
+public <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/DirectoryResource.html#line.183">doPut</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> 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 <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 <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> <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> req,
+public <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> <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> req,
<a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> 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 <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 <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> <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> req,
+public <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> <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> req,
<a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> 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 <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 void <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> req)</pre>
+<pre>protected void <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> req)</pre>
<div class="block">Verify that the specified request is allowed.
<p>
@@ -546,7 +546,7 @@ public <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 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 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 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 <a href="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 <a href="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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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> f,
+<pre>public <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> 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> 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 <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.54">LogsResource</a>()</pre>
+<pre>public <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 void <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> config)
+public void <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> 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 void <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 <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.html#line.102">getFileOrDirectory</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req,
+public <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.html#line.101">getFileOrDirectory</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req,
<a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> 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> properties,
@@ -392,7 +392,7 @@ public <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 void <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> req,
+public void <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> req,
<a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> 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> path,
@@ -439,7 +439,7 @@ public void <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 <a href="../../../../../org/apache/juneau/microservice/resources/LogParser.html" title="class in org.apache.juneau.microservice.resources">LogParser</a> <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> req,
+public <a href="../../../../../org/apache/juneau/microservice/resources/LogParser.html" title="class in org.apache.juneau.microservice.resources">LogParser</a> <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> 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> 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 <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 <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.html#line.249">downloadFile</a>(<a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> res,
+public <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.html#line.248">downloadFile</a>(<a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> 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> 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 <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 <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.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 <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.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> 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"> </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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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 static final <a href="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"> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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<Schema>)</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> </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<AuthSchemeProvider>)</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> </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> </dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/RestClientBuilder.html#setDefaultCookieSpecRegistry-org.apache.http.config.Lookup-">setDefaultCookieSpecRegistry(Lookup<CookieSpecProvider>)</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<?>)</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<?>)</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> </dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/dto/jsonschema/Schema.html#setRequired-java.util.List-">setRequired(List<String>)</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> </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> </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> </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> </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> </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> </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<?> resourceClass;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> List<Class<? extends Widget>> htmlWidgets = new ArrayList<Class<? extends Widget>>();<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> * <p><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<?> 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 <ja>@RestResource</ja>.<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<?> 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<Class<?>,RestResource> 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<String> 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<Class<?>,RestResource> e : restResourceAnnotationsParentFirst.entrySet()) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span> Class<?> 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<? extends Widget> 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<String,Method> map = new LinkedHashMap<String,Method>();<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) && 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<?> resourceClass;<a name="line.132"></a>
+<span class="sourceLineNo">133</span> List<Class<? extends Widget>> htmlWidgets = new ArrayList<Class<? extends Widget>>();<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> * <p><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<?> 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 <ja>@RestResource</ja>.<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<?> 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<Class<?>,RestResource> 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<String> 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<Class<?>,RestResource> e : restResourceAnnotationsParentFirst.entrySet()) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span> Class<?> 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<? extends Widget> 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<?>[] 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 < 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> * <p><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 <js>"$X{...}"</js>.<a name="line.315"></a>
-<span class="sourceLineNo">316</span> *<a name="line.316"></a>
-<span class="sourceLineNo">317</span> * <p><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> * <ul><a name="line.319"></a>
-<span class="sourceLineNo">320</span> * <li>{@link SystemPropertiesVar}<a name="line.320"></a>
-<span class="sourceLineNo">321</span> * <li>{@link EnvVariablesVar}<a name="line.321"></a>
-<span class="sourceLineNo">322</span> * <li>{@link ConfigFileVar}<a name="line.322"></a>
-<span class="sourceLineNo">323</span> * <li>{@link IfVar}<a name="line.323"></a>
-<span class="sourceLineNo">324</span> * <li>{@link SwitchVar}<a name="line.324"></a>
-<span class="sourceLineNo">325</span> * </ul><a name="line.325"></a>
-<span class="sourceLineNo">326</span> *<a name="line.326"></a>
-<span class="sourceLineNo">327</span> * <p><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> * <ul><a name="line.329"></a>
-<span class="sourceLineNo">330</span> * <li>{@link LocalizationVar}<a name="line.330"></a>
-<span class="sourceLineNo">331</span> * <li>{@link RequestVar}<a name="line.331"></a>
-<span class="sourceLineNo">332</span> * <li>{@link SerializedRequestAttrVar}<a name="line.332"></a>
-<span class="sourceLineNo">333</span> * <li>{@link ServletInitParamVar}<a name="line.333"></a>
-<span class="sourceLineNo">334</span> * <li>{@link UrlVar}<a name="line.334"></a>
-<span class="sourceLineNo">335</span> * <li>{@link UrlEncodeVar}<a name="line.335"></a>
-<span class="sourceLineNo">336</span> * <li>{@link WidgetVar}<a name="line.336"></a>
-<span class="sourceLineNo">337</span> * </ul><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<?>...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> * <p><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<String,Method> map = new LinkedHashMap<String,Method>();<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) && 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<?>[] 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 < 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> * <p><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 <js>"$X{...}"</js>.<a name="line.330"></a>
+<span class="sourceLineNo">331</span> *<a name="line.331"></a>
+<span class="sourceLineNo">332</span> * <p><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> * <ul><a name="line.334"></a>
+<span class="sourceLineNo">335</span> * <li>{@link SystemPropertiesVar}<a name="line.335"></a>
+<span class="sourceLineNo">336</span> * <li>{@link EnvVariablesVar}<a name="line.336"></a>
+<span class="sourceLineNo">337</span> * <li>{@link ConfigFileVar}<a name="line.337"></a>
+<span class="sourceLineNo">338</span> * <li>{@link IfVar}<a name="line.338"></a>
+<span class="sourceLineNo">339</span> * <li>{@link SwitchVar}<a name="line.339"></a>
+<span class="sourceLineNo">340</span> * </ul><a name="line.340"></a>
+<span class="sourceLineNo">341</span> *<a name="line.341"></a>
+<span class="sourceLineNo">342</span> * <p><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> * <ul><a name="line.344"></a>
+<span class="sourceLineNo">345</span> * <li>{@link LocalizationVar}<a name="line.345"></a>
+<span class="sourceLineNo">346</span> * <li>{@link RequestVar}<a name="line.346"></a>
+<span class="sourceLineNo">347</span> * <li>{@link SerializedRequestAttrVar}<a name="line.347"></a>
+<span class="sourceLineNo">348</span> * <li>{@link ServletInitParamVar}<a name="line.348"></a>
+<span class="sourceLineNo">349</span> * <li>{@link UrlVar}<a name="line.349"></a>
+<span class="sourceLineNo">350</span> * <li>{@link UrlEncodeVar}<a name="line.350"></a>
+<span class="sourceLineNo">351</span> * <li>{@link WidgetVar}<a name="line.351"></a>
+<span class="sourceLineNo">352</span> * </ul><a name="line.352"></a>
<span class="sourceLineNo">353</span> *<a name="line.353"></a>
-<span class="sourceLineNo">354</span> * <p><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> * <p class='bcode'><a name="line.359"></a>
-<span class="sourceLineNo">360</span> * config.addVarContextObject(<jsf>SESSION_config</jsf>, configFile);<a name="line.360"></a>
-<span class="sourceLineNo">361</span> * </p><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> * <p><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> * <p><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<?>...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> * <p><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> * <p><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> * <p class='bcode'><a name="line.374"></a>
+<span class="sourceLineNo">375</span> * config.addVarContextObject(<jsf>SESSION_config</jsf>, configFile);<a name="line.375"></a>
+<span class="sourceLineNo">376</span> * </p><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> * <p><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> * <p><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> * <p><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<String,Object> 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> * <p><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> * <p><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> * <p><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> * <p><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<?>...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<String,Object> 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> * <p><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> * <p><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> * <p><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<?>...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<?>...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> * <p><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> * <p><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<? extends SerializerListener> 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> * <p><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<? extends ParserListener> 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> * <p><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> * <p><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<? extends RestParam>...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<?>...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> * <p><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<? extends SerializerListener> 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> * <p><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<? extends ParserListener> 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> * <p><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> * <p><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> * <p><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<?>...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<? extends RestParam>...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> * <p><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> * <p><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> * <p class='bcode'><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> * </p><a name="line.548"></a>
-<span class="sourceLineNo">549</span> *<a name="line.549"></a>
-<span class="sourceLineNo">550</span> * <p><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<?>...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> * <p><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> * <p class='bcode'><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> * </p><a name="line.563"></a>
<span class="sourceLineNo">564</span> *<a name="line.564"></a>
<span class="sourceLineNo">565</span> * <p><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> * <p><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<?>...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> * <p><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> * <p><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> * <ul class='spaced-list'><a name="line.41"></a>
-<span class="sourceLineNo">042</span> * <li><a name="line.42"></a>
-<span class="sourceLineNo">043</span> * Specifying the location via a <l>DirectoryResource.rootDir</l> property.<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * <li><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> * </ul><a name="line.46"></a>
-<span class="sourceLineNo">047</span> * <a name="line.47"></a>
-<span class="sourceLineNo">048</span> * <p><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> * <ul class='spaced-list'><a name="line.50"></a>
-<span class="sourceLineNo">051</span> * <li><a name="line.51"></a>
-<span class="sourceLineNo">052</span> * <l>DirectoryResource.allowViews</l> - If <jk>true</jk>, allows view and download access to files.<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * <li><a name="line.53"></a>
-<span class="sourceLineNo">054</span> * <l>DirectoryResource.allowPuts</l> - If <jk>true</jk>, allows files to be created or overwritten.<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * <li><a name="line.55"></a>
-<span class="sourceLineNo">056</span> * <l>DirectoryResource.allowDeletes</l> - If <jk>true</jk>, allows files to be deleted.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * </ul><a name="line.57"></a>
-<span class="sourceLineNo">058</span> * <a name="line.58"></a>
-<span class="sourceLineNo">059</span> * <p><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> * <p><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> * <ul class='spaced-list'><a name="line.40"></a>
+<span class="sourceLineNo">041</span> * <li><a name="line.41"></a>
+<span class="sourceLineNo">042</span> * Specifying the location via a <l>DirectoryResource.rootDir</l> property.<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * <li><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> * </ul><a name="line.45"></a>
+<span class="sourceLineNo">046</span> * <a name="line.46"></a>
+<span class="sourceLineNo">047</span> * <p><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> * <ul class='spaced-list'><a name="line.49"></a>
+<span class="sourceLineNo">050</span> * <li><a name="line.50"></a>
+<span class="sourceLineNo">051</span> * <l>DirectoryResource.allowViews</l> - If <jk>true</jk>, allows view and download access to files.<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * <li><a name="line.52"></a>
+<span class="sourceLineNo">053</span> * <l>DirectoryResource.allowPuts</l> - If <jk>true</jk>, allows files to be created or overwritten.<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * <li><a name="line.54"></a>
+<span class="sourceLineNo">055</span> * <l>DirectoryResource.allowDeletes</l> - If <jk>true</jk>, allows files to be deleted.<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * </ul><a name="line.56"></a>
+<span class="sourceLineNo">057</span> * <a name="line.57"></a>
+<span class="sourceLineNo">058</span> * <p><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> * <p><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<FileResource> l = new LinkedList<FileResource>();<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 <js>"File deleted"</js> 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 <js>"File added"</js> 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> * <p><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> * <p><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> * <p><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") && ! 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") && ! 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") && ! 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") && ! 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 && f.canRead() && ! 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 && f.canRead() && ! 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 && 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> * <p><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<FileResource> l = new LinkedList<FileResource>();<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 <js>"File deleted"</js> 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 <js>"File added"</js> 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> * <p><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> * <p><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> * <p><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") && ! 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") && ! 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") && ! 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") && ! 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 && f.canRead() && ! 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 && f.canRead() && ! 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 && 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> * <h6 class='topic'>Jetty Server Details</h6><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> * <h6 class='topic'>Jetty Server Details</h6><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> * <h6 class='topic'>Defining REST Resources</h6><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 <code>jetty.xml</code> file as normal servlets.<a name="line.42"></a>
<span class="sourceLineNo">043</span> *<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * <h6 class='topic'>Defining REST Resources</h6><a name="line.44"></a>
+<span class="sourceLineNo">044</span> * <h6 class='topic'>Logging</h6><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> * <h6 class='topic'>Logging</h6><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> * <h6 class='topic'>Lifecycle Listener Methods</h6><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> * <ul class='spaced-list'><a name="line.56"></a>
-<span class="sourceLineNo">057</span> * <li><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> * <li><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> * <li><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> * <li><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> * <li><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> * <li><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> * <li><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> * </ul><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> * <h6 class='topic'>Lifecycle Listener Methods</h6><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> * <ul class='spaced-list'><a name="line.51"></a>
+<span class="sourceLineNo">052</span> * <li><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> * <li><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> * <li><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> * <li><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> * <li><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> * <li><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> * <li><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> * </ul><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> * <p><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> * <p><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 <jk>null</jk> 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> * <p><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> * <p><a name="line.173"></a>
+<span class="sourceLineNo">174</span> * The value is determined by looking at the <code>Server/Connectors[ServerConnector]/port</code> 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> * <p><a name="line.188"></a>
+<span class="sourceLineNo">189</span> * The value is determined by looking at the <code>Server/Handlers[ServletContextHandler]/contextPath</code> 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> * <p><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> * <p><a name="line.195"></a>
-<span class="sourceLineNo">196</span> * The default implementation uses the <cs>Logging</cs> section in the config file to set up logging:<a name="line.196"></a>
-<span class="sourceLineNo">197</span> * <p class='bcode'><a name="line.197"></a>
-<span class="sourceLineNo">198</span> * <cc>#================================================================================<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> * #================================================================================</cc><a name="line.201"></a>
-<span class="sourceLineNo">202</span> * <cs>[Logging]</cs><a name="line.202"></a>
-<span class="sourceLineNo">203</span> *<a name="line.203"></a>
-<span class="sourceLineNo">204</span> * <cc># The directory where to create the log file.<a name="line.204"></a>
-<span class="sourceLineNo">205</span> * # Default is ".".</cc><a name="line.205"></a>
-<span class="sourceLineNo">206</span> * <ck>logDir</ck> = logs<a name="line.206"></a>
-<span class="sourceLineNo">207</span> *<a name="line.207"></a>
-<span class="sourceLineNo">208</span> * <cc># 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.</cc><a name="line.211"></a>
-<span class="sourceLineNo">212</span> * <ck>logFile</ck> = microservice.%g.log<a name="line.212"></a>
-<span class="sourceLineNo">213</span> *<a name="line.213"></a>
-<span class="sourceLineNo">214</span> * <cc># 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.</cc><a name="line.215"></a>
-<span class="sourceLineNo">216</span> * <ck>append</ck> =<a name="line.216"></a>
-<span class="sourceLineNo">217</span> *<a name="line.217"></a>
-<span class="sourceLineNo">218</span> * <cc># 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".</cc><a name="line.219"></a>
-<span class="sourceLineNo">220</span> * <ck>dateFormat</ck> =<a name="line.220"></a>
-<span class="sourceLineNo">221</span> *<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * <cc># 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".</cc><a name="line.232"></a>
-<span class="sourceLineNo">233</span> * <ck>format</ck> =<a name="line.233"></a>
-<span class="sourceLineNo">234</span> *<a name="line.234"></a>
-<span class="sourceLineNo">235</span> * <cc># 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.</cc><a name="line.238"></a>
-<span class="sourceLineNo">239</span> * <ck>limit</ck> = 10M<a name="line.239"></a>
-<span class="sourceLineNo">240</span> *<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * <cc># Max number of log files.<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * # Default is 1.</cc><a name="line.242"></a>
-<span class="sourceLineNo">243</span> * <ck>count</ck> = 5<a name="line.243"></a>
-<span class="sourceLineNo">244</span> *<a name="line.244"></a>
-<span class="sourceLineNo">245</span> * <cc># 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.</cc><a name="line.247"></a>
-<span class="sourceLineNo">248</span> * <ck>levels</ck> = { org.apache.juneau:'INFO' }<a name="line.248"></a>
-<span class="sourceLineNo">249</span> *<a name="line.249"></a>
-<span class="sourceLineNo">250</span> * <cc># 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.</cc><a name="line.252"></a>
-<span class="sourceLineNo">253</span> * <ck>useStackTraceHashes</ck> = true<a name="line.253"></a>
-<span class="sourceLineNo">254</span> *<a name="line.254"></a>
-<span class="sourceLineNo">255</span> * <cc># The default level for the console logger.<a name="line.255"></a>
-<span class="sourceLineNo">256</span> * # Default is WARNING.</cc><a name="line.256"></a>
-<span class="sourceLineNo">257</span> * <ck>consoleLevel</ck> = WARNING<a name="line.257"></a>
-<span class="sourceLineNo">258</span> * </p><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> * <p><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> * <p><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 <code>REST/jettyXml</code> setting:<a name="line.300"></a>
-<span class="sourceLineNo">301</span> * <p class='bcode'><a name="line.301"></a>
-<span class="sourceLineNo">302</span> * <cc>#================================================================================<a name="line.302"></a>
-<span class="sourceLineNo">303</span> * # REST settings<a name="line.303"></a>
-<span class="sourceLineNo">304</span> * #================================================================================</cc><a name="line.304"></a>
-<span class="sourceLineNo">305</span> * <cs>[REST]</cs><a name="line.305"></a>
-<span class="sourceLineNo">306</span> *<a name="line.306"></a>
-<span class="sourceLineNo">307</span> * <cc># 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.</cc><a name="line.310"></a>
-<span class="sourceLineNo">311</span> * <ck>port</ck> = 10000<a name="line.311"></a>
-<span class="sourceLineNo">312</span> *<a name="line.312"></a>
-<span class="sourceLineNo">313</span> * <cc># 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 "/".</cc><a name="line.314"></a>
-<span class="sourceLineNo">315</span> * <ck>contextPath</ck> =<a name="line.315"></a>
-<span class="sourceLineNo">316</span> *<a name="line.316"></a>
-<span class="sourceLineNo">317</span> * <cc># Enable SSL support.</cc><a name="line.317"></a>
-<span class="sourceLineNo">318</span> * <ck>useSsl</ck> = 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<String,Class<? extends Servlet>> 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 <jk>null</jk> 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> * <p><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> * <p><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> * <p><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> * <p class='bcode'><a name="line.452"></a>
-<span class="sourceLineNo">453</span> *<a name="line.453"></a>
-<span class="sourceLineNo">454</span> * <cc>#================================================================================<a name="line.454"></a>
-<span class="sourceLineNo">455</span> * # REST settings<a name="line.455"></a>
-<span class="sourceLineNo">456</span> * #================================================================================</cc><a name="line.456"></a>
-<span class="sourceLineNo">457</span> * <cs>[REST]</cs><a name="line.457"></a>
-<span class="sourceLineNo">458</span> *<a name="line.458"></a>
-<span class="sourceLineNo">459</span> * <cc># 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.</cc><a name="line.463"></a>
-<span class="sourceLineNo">464</span> * <ck>resourceMap</ck> =<a name="line.464"></a>
-<span class="sourceLineNo">465</span> *<a name="line.465"></a>
-<span class="sourceLineNo">466</span> * <cc># 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.</cc><a name="line.473"></a>
-<span class="sourceLineNo">474</span> * <ck>resources</ck> =<a name="line.474"></a>
-<span class="sourceLineNo">475</span> * </p><a name="line.475"></a>
-<span class="sourceLineNo">476</span> * <a name="line.476"></a>
-<span class="sourceLineNo">477</span> * <p><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> * <p class='bcode'><a name="line.480"></a>
-<span class="sourceLineNo">481</span> * <mk>Rest-Resources:</mk> org.apache.juneau.microservice.sample.RootResources<a name="line.481"></a>
-<span class="sourceLineNo">482</span> * </p><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<String,Class<? extends Servlet>> 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<String,Class<? extends Servlet>> rm = new LinkedHashMap<String,Class<? extends Servlet>>();<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 && ! resourceMap.isEmpty()) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span> for (Map.Entry<String,Object> e : resourceMap.entrySet()) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span> Class<?> 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<? extends Servlet>)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 > 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<?> 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<? extends Servlet>)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> * <p><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> * <p class='bcode'><a name="line.524"></a>
-<span class="sourceLineNo">525</span> * <cs>[REST]</cs><a name="line.525"></a>
-<span class="sourceLineNo">526</span> *<a name="line.526"></a>
-<span class="sourceLineNo">527</span> * <cc># 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'.</cc><a name="line.531"></a>
-<span class="sourceLineNo">532</span> * <ck>saveConfigAction</ck> = RESTART_SERVER<a name="line.532"></a>
-<span class="sourceLineNo">533</span> * </p><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 <code>jetty.xml</code> 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> * <p><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 <code>jetty.xml</code>.<a name="line.566"></a>
-<span class="sourceLineNo">567</span> * <br>Can be any of the following:<a name="line.567"></a>
-<span class="sourceLineNo">568</span> * <ul><a name="line.568"></a>
-<span class="sourceLineNo">569</span> * <li>A {@link File} representing the location on the file system.<a name="line.569"></a>
-<span class="sourceLineNo">570</span> * <li>An {@link InputStream} containing the contents of the file.<a name="line.570"></a>
-<span class="sourceLineNo">571</span> * <li>A {@link String} representing the file system path.<a name="line.571"></a>
-<span class="sourceLineNo">572</span> * </ul><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> * <p><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> * <p><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> * <p><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> * <p><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> * <p><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 <js>"http"</js> or <js>"https"</js>.<a name="line.208"></a>
+<span class="sourceLineNo">209</span> * <p><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> * <code>Server/Connectors[ServerConnector]/ConnectionFactories[SslConnectionFactory]</code> 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 <js>"http"</js> or <js>"https"</js>.<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> * <p><a name="line.227"></a>
+<span class="sourceLineNo">228</span> * Simply uses <code>InetAddress.getLocalHost().getHostName()</code>.<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> * <p><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> * <p><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 <code>REST/jettyXml</code> setting:<a name="line.262"></a>
+<span class="sourceLineNo">263</span> * <p class='bcode'><a name="line.263"></a>
+<span class="sourceLineNo">264</span> * <cc>#================================================================================<a name="line.264"></a>
+<span class="sourceLineNo">265</span> * # Jetty settings<a name="line.265"></a>
+<span class="sourceLineNo">266</span> * #================================================================================</cc><a name="line.266"></a>
+<span class="sourceLineNo">267</span> * <cs>[Jetty]</cs><a name="line.267"></a>
+<span class="sourceLineNo">268</span> * <a name="line.268"></a>
+<span class="sourceLineNo">269</span> * <cc># Path of the jetty.xml file used to configure the Jetty server.</cc><a name="line.269"></a>
+<span class="sourceLineNo">270</span> * <ck>config</ck> = jetty.xml<a name="line.270"></a>
+<span class="sourceLineNo">271</span> * <a name="line.271"></a>
+<span class="sourceLineNo">272</span> * <cc># Resolve Juneau variables in the jetty.xml file.</cc><a name="line.272"></a>
+<span class="sourceLineNo">273</span> * <ck>resolveVars</ck> = true<a name="line.273"></a>
+<span class="sourceLineNo">274</span> * <a name="line.274"></a>
+<span class="sourceLineNo">275</span> * <cc># 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).</cc><a name="line.278"></a>
+<span class="sourceLineNo">279</span> * <ck>port</ck> = 10000,0,0,0<a name="line.279"></a>
+<span class="sourceLineNo">280</span> * </p><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> * <p><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 <code>404</code>, <code>405</code>, and <code>500</code> 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> * <p><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 <code>404</code>, <code>405</code>, and <code>500</code> 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> * <p><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> * <ul><a name="line.77"></a>
-<span class="sourceLineNo">078</span> * <li>{@link RestException}<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * <li>{@link InvocationTargetException}<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * </ul><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 <jk>null</jk> 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> * <p><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 <jk>true</jk>, replaces <js>'&lt;'</js>, <js>'&gt;'</js>, and <js>'&amp;'</js> 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('<', ' ').replace('>', ' ').replace('&', ' ');<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 && scrubForXssVulnerabilities)<a name="line.116"></a>
-<span class="sourceLineNo">117</span> msg = msg.replace('<', ' ').replace('>', ' ').replace('&', ' ');<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> * <p><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 <code>0</code> 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> * <p><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> * <ul><a name="line.78"></a>
+<span class="sourceLineNo">079</span> * <li>{@link RestException}<a name="line.79"></a>
+<span class="sourceLineNo">080</span> * <li>{@link InvocationTargetException}<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * </ul><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 <jk>null</jk> 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> * <p><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 <jk>true</jk>, replaces <js>'&lt;'</js>, <js>'&gt;'</js>, and <js>'&amp;'</js> 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('<', ' ').replace('>', ' ').replace('&', ' ');<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 && scrubForXssVulnerabilities)<a name="line.117"></a>
+<span class="sourceLineNo">118</span> msg = msg.replace('<', ' ').replace('>', ' ').replace('&', ' ');<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> * <p><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 <code>0</code> 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> * <p><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> * <p><a name="line.32"></a>
-<span class="sourceLineNo">033</span> * Supports the following request <code>Accept</code> header values with the resulting response <code>Content-Type</code>:<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * <table class='styled'><a name="line.34"></a>
-<span class="sourceLineNo">035</span> * <tr><a name="line.35"></a>
-<span class="sourceLineNo">036</span> * <th>Accept</th><a name="line.36"></a>
-<span class="sourceLineNo">037</span> * <th>Content-Type</th><a name="line.37"></a>
-<span class="sourceLineNo">038</span> * <th>Serializer</th><a name="line.38"></a>
-<span class="sourceLineNo">039</span> * </tr><a name="line.39"></a>
-<span class="sourceLineNo">040</span> * <tr><a name="line.40"></a>
-<span class="sourceLineNo">041</span> * <td class='code'>application/json<br>text/json</td><a name="line.41"></a>
-<span class="sourceLineNo">042</span> * <td class='code'>application/json</td><a name="line.42"></a>
-<span class="sourceLineNo">043</span> * <td>{@link JsonSerializer}</td><a name="line.43"></a>
-<span class="sourceLineNo">044</span> * </tr><a name="line.44"></a>
-<span class="sourceLineNo">045</span> * <tr><a name="line.45"></a>
-<span class="sourceLineNo">046</span> * <td class='code'>application/json+simple<br>text/json+simple</td><a name="line.46"></a>
-<span class="sourceLineNo">047</span> * <td class='code'>application/json</td><a name="line.47"></a>
-<span class="sourceLineNo">048</span> * <td>{@link org.apache.juneau.json.JsonSerializer.Simple}</td><a name="line.48"></a>
-<span class="sourceLineNo">049</span> * </tr><a name="line.49"></a>
-<span class="sourceLineNo">050</span> * <tr><a name="line.50"></a>
-<span class="sourceLineNo">051</span> * <td class='code'>application/json+schema<br>text/json+schema</td><a name="line.51"></a>
-<span class="sourceLineNo">052</span> * <td class='code'>application/json</td><a name="line.52"></a>
-<span class="sourceLineNo">053</span> * <td>{@link JsonSchemaSerializer}</td><a name="line.53"></a>
-<span class="sourceLineNo">054</span> * </tr><a name="line.54"></a>
-<span class="sourceLineNo">055</span> * <tr><a name="line.55"></a>
-<span class="sourceLineNo">056</span> * <td class='code'>text/xml</td><a name="line.56"></a>
-<span class="sourceLineNo">057</span> * <td class='code'>text/xml</td><a name="line.57"></a>
-<span class="sourceLineNo">058</span> * <td>{@link XmlDocSerializer}</td><a name="line.58"></a>
-<span class="sourceLineNo">059</span> * </tr><a name="line.59"></a>
-<span class="sourceLineNo">060</span> * <tr><a name="line.60"></a>
-<span class="sourceLineNo">061</span> * <td class='code'>text/xml+schema</td><a name="line.61"></a>
-<span class="sourceLineNo">062</span> * <td class='code'>text/xml</td><a name="line.62"></a>
-<span class="sourceLineNo">063</span> * <td>{@link XmlSchemaDocSerializer}</td><a name="line.63"></a>
-<span class="sourceLineNo">064</span> * </tr><a name="line.64"></a>
-<span class="sourceLineNo">065</span> * <tr><a name="line.65"></a>
-<span class="sourceLineNo">066</span> * <td class='code'>text/html</td><a name="line.66"></a>
-<span class="sourceLineNo">067</span> * <td class='code'>text/html</td><a name="line.67"></a>
-<span class="sourceLineNo">068</span> * <td>{@link HtmlDocSerializer}</td><a name="line.68"></a>
-<span class="sourceLineNo">069</span> * </tr><a name="line.69"></a>
-<span class="sourceLineNo">070</span> * <tr><a name="line.70"></a>
-<span class="sourceLineNo">071</span> * <td class='code'>text/html+stripped</td><a name="line.71"></a>
-<span class="sourceLineNo">072</span> * <td class='code'>text/html</td><a name="line.72"></a>
-<span class="sourceLineNo">073</span> * <td>{@link HtmlStrippedDocSerializer}</td><a name="line.73"></a>
-<span class="sourceLineNo">074</span> * </tr><a name="line.74"></a>
-<span class="sourceLineNo">075</span> * <tr><a name="line.75"></a>
-<span class="sourceLineNo">076</span> * <td class='code'>text/uon</td><a name="line.76"></a>
-<span class="sourceLineNo">077</span> * <td class='code'>text/uon</td><a name="line.77"></a>
-<span class="sourceLineNo">078</span> * <td>{@link UonSerializer}</td><a name="line.78"></a>
-<span class="sourceLineNo">079</span> * </tr><a name="line.79"></a>
-<span class="sourceLineNo">080</span> * <tr><a name="line.80"></a>
-<span class="sourceLineNo">081</span> * <td class='code'>application/x-www-form-urlencoded</td><a name="line.81"></a>
-<span class="sourceLineNo">082</span> * <td class='code'>application/x-www-form-urlencoded</td><a name="line.82"></a>
-<span class="sourceLineNo">083</span> * <td>{@link UrlEncodingSerializer}</td><a name="line.83"></a>
-<span class="sourceLineNo">084</span> * </tr><a name="line.84"></a>
-<span class="sourceLineNo">085</span> * <tr><a name="line.85"></a>
-<span class="sourceLineNo">086</span> * <td class='code'>text/xml+soap</td><a name="line.86"></a>
-<span class="sourceLineNo">087</span> * <td class='code'>text/xml</td><a name="line.87"></a>
-<span class="sourceLineNo">088</span> * <td>{@link SoapXmlSerializer}</td><a name="line.88"></a>
-<span class="sourceLineNo">089</span> * </tr><a name="line.89"></a>
-<span class="sourceLineNo">090</span> * <tr><a name="line.90"></a>
-<span class="sourceLineNo">091</span> * <td class='code'>text/plain</td><a name="line.91"></a>
-<span class="sourceLineNo">092</span> * <td class='code'>text/plain</td><a name="line.92"></a>
-<span class="sourceLineNo">093</span> * <td>{@link PlainTextSerializer}</td><a name="line.93"></a>
-<span class="sourceLineNo">094</span> * </tr><a name="line.94"></a>
-<span class="sourceLineNo">095</span> * </table><a name="line.95"></a>
-<span class="sourceLineNo">096</span> * <p><a name="line.96"></a>
-<span class="sourceLineNo">097</span> * Supports the following request <code>Content-Type</code> header values:<a name="line.97"></a>
-<span class="sourceLineNo">098</span> * </p><a name="line.98"></a>
-<span class="sourceLineNo">099</span> * <table class='styled'><a name="line.99"></a>
-<span class="sourceLineNo">100</span> * <tr><a name="line.100"></a>
-<span class="sourceLineNo">101</span> * <th>Content-Type</th><a name="line.101"></a>
-<span class="sourceLineNo">102</span> * <th>Parser</th><a name="line.102"></a>
-<span class="sourceLineNo">103</span> * </tr><a name="line.103"></a>
-<span class="sourceLineNo">104</span> * <tr><a name="line.104"></a>
-<span class="sourceLineNo">105</span> * <td class='code'>application/json<br>text/json</td><a name="line.105"></a>
-<span class="sourceLineNo">106</span> * <td>{@link JsonParser}</td><a name="line.106"></a>
-<span class="sourceLineNo">107</span> * </tr><a name="line.107"></a>
-<span class="sourceLineNo">108</span> * <tr><a name="line.108"></a>
-<span class="sourceLineNo">109</span> * <td class='code'>text/xml<br>application/xml</td><a name="line.109"></a>
-<span class="sourceLineNo">110</span> * <td>{@link XmlParser}</td><a name="line.110"></a>
-<span class="sourceLineNo">111</span> * </tr><a name="line.111"></a>
-<span class="sourceLineNo">112</span> * <tr><a name="line.112"></a>
-<span class="sourceLineNo">113</span> * <td class='code'>text/html<br>text/html+stripped</td><a name="line.113"></a>
-<span class="sourceLineNo">114</span> * <td>{@link HtmlParser}</td><a name="line.114"></a>
-<span class="sourceLineNo">115</span> * </tr><a name="line.115"></a>
-<span class="sourceLineNo">116</span> * <tr><a name="line.116"></a>
-<span class="sourceLineNo">117</span> * <td class='code'>text/uon</td><a name="line.117"></a>
-<span class="sourceLineNo">118</span> * <td>{@link UonParser}</td><a name="line.118"></a>
-<span class="sourceLineNo">119</span> * </tr><a name="line.119"></a>
-<span class="sourceLineNo">120</span> * <tr><a name="line.120"></a>
-<span class="sourceLineNo">121</span> * <td class='code'>application/x-www-form-urlencoded</td><a name="line.121"></a>
-<span class="sourceLineNo">122</span> * <td>{@link UrlEncodingParser}</td><a name="line.122"></a>
-<span class="sourceLineNo">123</span> * </tr><a name="line.123"></a>
-<span class="sourceLineNo">124</span> * <tr><a name="line.124"></a>
-<span class="sourceLineNo">125</span> * <td class='code'>text/plain</td><a name="line.125"></a>
-<span class="sourceLineNo">126</span> * <td>{@link PlainTextParser}</td><a name="line.126"></a>
-<span class="sourceLineNo">127</span> * </tr><a name="line.127"></a>
-<span class="sourceLineNo">128</span> * </table><a name="line.128"></a>
-<span class="sourceLineNo">129</span> *<a name="line.129"></a>
-<span class="sourceLineNo">130</span> * <p><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> * <p><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> * <p><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> * <img class='bordered' src='doc-files/OptionsPage.png'><a name="line.143"></a>
-<span class="sourceLineNo">144</span> *<a name="line.144"></a>
-<span class="sourceLineNo">145</span> * <p><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> * <h6 class='topic'>Other Notes</h6><a name="line.148"></a>
-<span class="sourceLineNo">149</span> * <ul class='spaced-list'><a name="line.149"></a>
-<span class="sourceLineNo">150</span> * <li><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 <js>"styles/juneau.css"</js>.<a name="line.152"></a>
-<span class="sourceLineNo">153</span> * <li><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> * <js>"juneau.ico"</js>.<a name="line.155"></a>
-<span class="sourceLineNo">156</span> * <li><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 <js>"{htdocs:'htdocs'}"</js>.<a name="line.158"></a>
-<span class="sourceLineNo">159</span> * This allows files inside the <code>[servletPackage].htdocs</code> package to be served up under the URL<a name="line.159"></a>
-<span class="sourceLineNo">160</span> * <code>/servletPath/htdocs</code>.<a name="line.160"></a>
-<span class="sourceLineNo">161</span> * </ul><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 &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> "<h1>$R{servletTitle}</h1>",<a name="line.194"></a>
-<span class="sourceLineNo">195</span> "<h2>$R{methodSummary,$R{servletDescription}}</h2>",<a name="line.195"></a>
-<span class="sourceLineNo">196</span> "<a href='http://juneau.apache.org'><img src='$U{servlet:/htdocs/juneau.png}' style='position:absolute;top:5;right:5;background-color:transparent;height:30px'/></a>"<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&Accept=text/json&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> * <p><a name="line.30"></a>
+<span class="sourceLineNo">031</span> * Supports the following request <code>Accept</code> header values with the resulting response <code>Content-Type</code>:<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * <table class='styled'><a name="line.32"></a>
+<span class="sourceLineNo">033</span> * <tr><a name="line.33"></a>
+<span class="sourceLineNo">034</span> * <th>Accept</th><a name="line.34"></a>
+<span class="sourceLineNo">035</span> * <th>Content-Type</th><a name="line.35"></a>
+<span class="sourceLineNo">036</span> * <th>Serializer</th><a name="line.36"></a>
+<span class="sourceLineNo">037</span> * </tr><a name="line.37"></a>
+<span class="sourceLineNo">038</span> * <tr><a name="line.38"></a>
+<span class="sourceLineNo">039</span> * <td class='code'>application/json<br>text/json</td><a name="line.39"></a>
+<span class="sourceLineNo">040</span> * <td class='code'>application/json</td><a name="line.40"></a>
+<span class="sourceLineNo">041</span> * <td>{@link JsonSerializer}</td><a name="line.41"></a>
+<span class="sourceLineNo">042</span> * </tr><a name="line.42"></a>
+<span class="sourceLineNo">043</span> * <tr><a name="line.43"></a>
+<span class="sourceLineNo">044</span> * <td class='code'>application/json+simple<br>text/json+simple</td><a name="line.44"></a>
+<span class="sourceLineNo">045</span> * <td class='code'>application/json</td><a name="line.45"></a>
+<span class="sourceLineNo">046</span> * <td>{@link org.apache.juneau.json.JsonSerializer.Simple}</td><a name="line.46"></a>
+<span class="sourceLineNo">047</span> * </tr><a name="line.47"></a>
+<span class="sourceLineNo">048</span> * <tr><a name="line.48"></a>
+<span class="sourceLineNo">049</span> * <td class='code'>application/json+schema<br>text/json+schema</td><a name="line.49"></a>
+<span class="sourceLineNo">050</span> * <td class='code'>application/json</td><a name="line.50"></a>
+<span class="sourceLineNo">051</span> * <td>{@link JsonSchemaSerializer}</td><a name="line.51"></a>
+<span class="sourceLineNo">052</span> * </tr><a name="line.52"></a>
+<span class="sourceLineNo">053</span> * <tr><a name="line.53"></a>
+<span class="sourceLineNo">054</span> * <td class='code'>text/xml</td><a name="line.54"></a>
+<span class="sourceLineNo">055</span> * <td class='code'>text/xml</td><a name="line.55"></a>
+<span class="sourceLineNo">056</span> * <td>{@link XmlDocSerializer}</td><a name="line.56"></a>
+<span class="sourceLineNo">057</span> * </tr><a name="line.57"></a>
+<span class="sourceLineNo">058</span> * <tr><a name="line.58"></a>
+<span class="sourceLineNo">059</span> * <td class='code'>text/xml+schema</td><a name="line.59"></a>
+<span class="sourceLineNo">060</span> * <td class='code'>text/xml</td><a name="line.60"></a>
+<span class="sourceLineNo">061</span> * <td>{@link XmlSchemaDocSerializer}</td><a name="line.61"></a>
+<span class="sourceLineNo">062</span> * </tr><a name="line.62"></a>
+<span class="sourceLineNo">063</span> * <tr><a name="line.63"></a>
+<span class="sourceLineNo">064</span> * <td class='code'>text/html</td><a name="line.64"></a>
+<span class="sourceLineNo">065</span> * <td class='code'>text/html</td><a name="line.65"></a>
+<span class="sourceLineNo">066</span> * <td>{@link HtmlDocSerializer}</td><a name="line.66"></a>
+<span class="sourceLineNo">067</span> * </tr><a name="line.67"></a>
+<span class="sourceLineNo">068</span> * <tr><a name="line.68"></a>
+<span class="sourceLineNo">069</span> * <td class='code'>text/html+stripped</td><a name="line.69"></a>
+<span class="sourceLineNo">070</span> * <td class='code'>text/html</td><a name="line.70"></a>
+<span class="sourceLineNo">071</span> * <td>{@link HtmlStrippedDocSerializer}</td><a name="line.71"></a>
+<span class="sourceLineNo">072</span> * </tr><a name="line.72"></a>
+<span class="sourceLineNo">073</span> * <tr><a name="line.73"></a>
+<span class="sourceLineNo">074</span> * <td class='code'>text/uon</td><a name="line.74"></a>
+<span class="sourceLineNo">075</span> * <td class='code'>text/uon</td><a name="line.75"></a>
+<span class="sourceLineNo">076</span> * <td>{@link UonSerializer}</td><a name="line.76"></a>
+<span class="sourceLineNo">077</span> * </tr><a name="line.77"></a>
+<span class="sourceLineNo">078</span> * <tr><a name="line.78"></a>
+<span class="sourceLineNo">079</span> * <td class='code'>application/x-www-form-urlencoded</td><a name="line.79"></a>
+<span class="sourceLineNo">080</span> * <td class='code'>application/x-www-form-urlencoded</td><a name="line.80"></a>
+<span class="sourceLineNo">081</span> * <td>{@link UrlEncodingSerializer}</td><a name="line.81"></a>
+<span class="sourceLineNo">082</span> * </tr><a name="line.82"></a>
+<span class="sourceLineNo">083</span> * <tr><a name="line.83"></a>
+<span class="sourceLineNo">084</span> * <td class='code'>text/xml+soap</td><a name="line.84"></a>
+<span class="sourceLineNo">085</span> * <td class='code'>text/xml</td><a name="line.85"></a>
+<span class="sourceLineNo">086</span> * <td>{@link SoapXmlSerializer}</td><a name="line.86"></a>
+<span class="sourceLineNo">087</span> * </tr><a name="line.87"></a>
+<span class="sourceLineNo">088</span> * <tr><a name="line.88"></a>
+<span class="sourceLineNo">089</span> * <td class='code'>text/plain</td><a name="line.89"></a>
+<span class="sourceLineNo">090</span> * <td class='code'>text/plain</td><a name="line.90"></a>
+<span class="sourceLineNo">091</span> * <td>{@link PlainTextSerializer}</td><a name="line.91"></a>
+<span class="sourceLineNo">092</span> * </tr><a name="line.92"></a>
+<span class="sourceLineNo">093</span> * </table><a name="line.93"></a>
+<span class="sourceLineNo">094</span> * <p><a name="line.94"></a>
+<span class="sourceLineNo">095</span> * Supports the following request <code>Content-Type</code> header values:<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * </p><a name="line.96"></a>
+<span class="sourceLineNo">097</span> * <table class='styled'><a name="line.97"></a>
+<span class="sourceLineNo">098</span> * <tr><a name="line.98"></a>
+<span class="sourceLineNo">099</span> * <th>Content-Type</th><a name="line.99"></a>
+<span class="sourceLineNo">100</span> * <th>Parser</th><a name="line.100"></a>
+<span class="sourceLineNo">101</span> * </tr><a name="line.101"></a>
+<span class="sourceLineNo">102</span> * <tr><a name="line.102"></a>
+<span class="sourceLineNo">103</span> * <td class='code'>application/json<br>text/json</td><a name="line.103"></a>
+<span class="sourceLineNo">104</span> * <td>{@link JsonParser}</td><a name="line.104"></a>
+<span class="sourceLineNo">105</span> * </tr><a name="line.105"></a>
+<span class="sourceLineNo">106</span> * <tr><a name="line.106"></a>
+<span class="sourceLineNo">107</span> * <td class='code'>text/xml<br>application/xml</td><a name="line.107"></a>
+<span class="sourceLineNo">108</span> * <td>{@link XmlParser}</td><a name="line.108"></a>
+<span class="sourceLineNo">109</span> * </tr><a name="line.109"></a>
+<span class="sourceLineNo">110</span> * <tr><a name="line.110"></a>
+<span class="sourceLineNo">111</span> * <td class='code'>text/html<br>text/html+stripped</td><a name="line.111"></a>
+<span class="sourceLineNo">112</span> * <td>{@link HtmlParser}</td><a name="line.112"></a>
+<span class="sourceLineNo">113</span> * </tr><a name="line.113"></a>
+<span class="sourceLineNo">114</span> * <tr><a name="line.114"></a>
+<span class="sourceLineNo">115</span> * <td class='code'>text/uon</td><a name="line.115"></a>
+<span class="sourceLineNo">116</span> * <td>{@link UonParser}</td><a name="line.116"></a>
+<span class="sourceLineNo">117</span> * </tr><a name="line.117"></a>
+<span class="sourceLineNo">118</span> * <tr><a name="line.118"></a>
+<span class="sourceLineNo">119</span> * <td class='code'>application/x-www-form-urlencoded</td><a name="line.119"></a>
+<span class="sourceLineNo">120</span> * <td>{@link UrlEncodingParser}</td><a name="line.120"></a>
+<span class="sourceLineNo">121</span> * </tr><a name="line.121"></a>
+<span class="sourceLineNo">122</span> * <tr><a name="line.122"></a>
+<span class="sourceLineNo">123</span> * <td class='code'>text/plain</td><a name="line.123"></a>
+<span class="sourceLineNo">124</span> * <td>{@link PlainTextParser}</td><a name="line.124"></a>
+<span class="sourceLineNo">125</span> * </tr><a name="line.125"></a>
+<span class="sourceLineNo">126</span> * </table><a name="line.126"></a>
+<span class="sourceLineNo">127</span> *<a name="line.127"></a>
+<span class="sourceLineNo">128</span> * <p><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> * <p><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> * <p><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> * <img class='bordered' src='doc-files/OptionsPage.png'><a name="line.141"></a>
+<span class="sourceLineNo">142</span> *<a name="line.142"></a>
+<span class="sourceLineNo">143</span> * <p><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> * <h6 class='topic'>Other Notes</h6><a name="line.146"></a>
+<span class="sourceLineNo">147</span> * <ul class='spaced-list'><a name="line.147"></a>
+<span class="sourceLineNo">148</span> * <li><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 <js>"styles/juneau.css"</js>.<a name="line.150"></a>
+<span class="sourceLineNo">151</span> * <li><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> * <js>"juneau.ico"</js>.<a name="line.153"></a>
+<span class="sourceLineNo">154</span> * <li><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 <js>"{htdocs:'htdocs'}"</js>.<a name="line.156"></a>
+<span class="sourceLineNo">157</span> * This allows files inside the <code>[servletPackage].htdocs</code> package to be served up under the URL<a name="line.157"></a>
+<span class="sourceLineNo">158</span> * <code>/servletPath/htdocs</code>.<a name="line.158"></a>
+<span class="sourceLineNo">159</span> * </ul><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> "<h1>$R{servletTitle}</h1>",<a name="line.189"></a>
+<span class="sourceLineNo">190</span> "<h2>$R{methodSummary,$R{servletDescription}}</h2>",<a name="line.190"></a>
+<span class="sourceLineNo">191</span> "<a href='http://juneau.apache.org'><img src='$U{servlet:/htdocs/juneau.png}' style='position:absolute;top:5;right:5;background-color:transparent;height:30px'/></a>"<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&Accept=text/json&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> * <br>This treats request parameters as plain text.<a name="line.101"></a>
<span class="sourceLineNo">102</span> * <br>Only POJOs directly convertible from <l>Strings</l> can be represented in parameters when using this mode.<a name="line.102"></a>
<span class="sourceLineNo">103</span> * <li><a name="line.103"></a>
-<span class="sourceLineNo">104</span> * <js>"INHERIT"</js> (default) - Inherit from the {@link RestContext#REST_paramFormat} property on the<a name="line.104"></a>
+<span class="sourceLineNo">104</span> * <js>"INHERIT"</js> (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> * </ul><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> * <br>This treats request parameters as plain text.<a name="line.97"></a>
<span class="sourceLineNo">098</span> * <br>Only POJOs directly convertible from <l>Strings</l> can be represented in parameters when using this mode.<a name="line.98"></a>
<span class="sourceLineNo">099</span> * <li><a name="line.99"></a>
-<span class="sourceLineNo">100</span> * <js>"INHERIT"</js> (default) - Inherit from the {@link RestContext#REST_paramFormat} property on the<a name="line.100"></a>
+<span class="sourceLineNo">100</span> * <js>"INHERIT"</js> (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> * </ul><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> * <p><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> * <ul><a name="line.640"></a>
+<span class="sourceLineNo">641</span> * <li>String value.<a name="line.641"></a>
+<span class="sourceLineNo">642</span> * <li>Defaults to system property <js>"juneau.defaultCharset"</js>, or <js>"utf-8"</js> if not specified.<a name="line.642"></a>
+<span class="sourceLineNo">643</span> * <li>Can contain variables.<a name="line.643"></a>
+<span class="sourceLineNo">644</span> * <li>Overrides the value at the class level via {@link RestResource#defaultCharset() @RestResource.defaultCharset()}.<a name="line.644"></a>
+<span class="sourceLineNo">645</span> * </ul><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> * <ul class='spaced-list'><a name="line.653"></a>
+<span class="sourceLineNo">654</span> * <li><a name="line.654"></a>
+<span class="sourceLineNo">655</span> * <js>"UON"</js> - URL-Encoded Object Notation.<a name="line.655"></a>
+<span class="sourceLineNo">656</span> * <br>This notation allows for request parameters to contain arbitrarily complex POJOs.<a name="line.656"></a>
+<span class="sourceLineNo">657</span> * <li><a name="line.657"></a>
+<span class="sourceLineNo">658</span> * <js>"PLAIN"</js> - Plain text.<a name="line.658"></a>
+<span class="sourceLineNo">659</span> * <br>This treats request parameters as plain text.<a name="line.659"></a>
+<span class="sourceLineNo">660</span> * <br>Only POJOs directly convertible from <l>Strings</l> 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> * </ul><a name="line.662"></a>
+<span class="sourceLineNo">663</span> *<a name="line.663"></a>
+<span class="sourceLineNo">664</span> * <p><a name="line.664"></a>
+<span class="sourceLineNo">665</span> * Note that the parameter value <js>"(foo)"</js> is interpreted as <js>"(foo)"</js> when using plain mode, but<a name="line.665"></a>
+<span class="sourceLineNo">666</span> * <js>"foo"</js> when using UON mode.<a name="line.666"></a>
+<span class="sourceLineNo">667</span> *<a name="line.667"></a>
+<span class="sourceLineNo">668</span> * <p><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> * <ul><a name="line.672"></a>
+<span class="sourceLineNo">673</span> * <li>String value.<a name="line.673"></a>
+<span class="sourceLineNo">674</span> * <li>Defaults to system property <js>"juneau.paramFormat"</js>, or <js>"UON"</js> if not specified.<a name="line.674"></a>
+<span class="sourceLineNo">675</span> * <li>Can contain variables.<a name="line.675"></a>
+<span class="sourceLineNo">676</span> * <li>Overrides the value at the class level via {@link RestResource#paramFormat() @RestResource.paramFormat()}.<a name="line.676"></a>
+<span class="sourceLineNo">677</span> * </ul><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 <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a> <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> key)</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a> <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> 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 <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a> <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> key,
+<pre>public <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a> <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> key,
<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a> 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 void <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><? 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>> map)</pre>
+<pre>public void <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><? 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>> 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 void <a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.316">clear</a>()</pre>
+<pre>public void <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 boolean <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> key)</pre>
+<pre>public boolean <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> 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 boolean <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> value)</pre>
+<pre>public boolean <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> 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 <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><<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><<a href="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>>> <a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.342">entrySet</a>()</pre>
+<pre>public <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><<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><<a href="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>>> <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 boolean <a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.381">isEmpty</a>()</pre>
+<pre>public boolean <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 <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><<a href="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/ini/ConfigFileImpl.html#line.386">keySet</a>()</pre>
+<pre>public <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><<a href="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/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 int <a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.425">size</a>()</pre>
+<pre>public int <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 <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><<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>> <a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.430">values</a>()</pre>
+<pre>public <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><<a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a>> <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 <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a> <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> key)</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a> <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> 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 <a href="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/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> sectionName,
+<pre>public <a href="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/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> 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> sectionKey)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="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/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> sectionName,
+<pre>public <a href="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/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> 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> 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> value,
<a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a> 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 <a href="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/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> sectionName,
+<pre>public <a href="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/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> 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> 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> value,
boolean 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 <a href="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/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> sectionName,
+<pre>public <a href="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/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> 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> sectionKey)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> section,
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> 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>... lines)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> section,
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> 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>... headerComments)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> section)</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> section)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a> <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> name)</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a> <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> name)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a> <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> name,
+<pre>public <a href="../../../../org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a> <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> name,
boolean create)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> name)</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> name)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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> name,
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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> 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><<a href="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>> contents)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> name)</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> name)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <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><<a href="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/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> sectionName)</pre>
+<pre>public <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><<a href="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/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> sectionName)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 boolean <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> key)</pre>
+<pre>public boolean <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> key)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.639">save</a>()
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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: <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 <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> out,
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFileImpl.html" title="class in org.apache.juneau.ini">ConfigFileImpl</a> <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> out,
<a href="../../../../org/apache/juneau/ini/ConfigFileFormat.html" title="enum in org.apache.juneau.ini">ConfigFileFormat</a> 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: <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 <a href="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/ini/ConfigFileImpl.html#line.681">toString</a>()</pre>
+<pre>public <a href="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/ini/ConfigFileImpl.html#line.690">toString</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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> listener)</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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> listener)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/Writable.html" title="interface in org.apache.juneau">Writable</a> <a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.708">toWritable</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/Writable.html" title="interface in org.apache.juneau">Writable</a> <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: <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 <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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> cf)</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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> cf)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a> <a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.737">getBeanSession</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a> <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: <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 void <a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.742">readLock</a>()</pre>
+<pre>protected void <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: <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 void <a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.747">readUnlock</a>()</pre>
+<pre>protected void <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: <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 <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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> vr)</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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> vr)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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> vs)</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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> vs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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 <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <a href="../../../../src-html/org/apache/juneau/ini/ConfigFileImpl.html#line.775">getResolving</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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: <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 <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>... keywords)</pre>
+<pre>public <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>... 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 boolean <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> s)</pre>
+<pre>public boolean <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> 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 Class</span></a></li>
-<li><a href="../../../../org/apache/juneau/internal/TeeOutputStream.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next 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 Class</span></a></li>
-<li><a href="../../../../org/apache/juneau/internal/TeeOutputStream.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next 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 Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/TeeOutputStream.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> 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>... 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> 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>... 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> 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>... 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 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 <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 <a href="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/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> 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>... 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 <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> <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> 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>... 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 <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> <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> 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>... 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 Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/TeeOutputStream.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 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 Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../org/apache/juneau/internal/TeeWriter.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next 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 Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/internal/SystemUtils.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../org/apache/juneau/internal/TeeWriter.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">Next 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><K,V></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> * <p><a name="line.20"></a>
-<span class="sourceLineNo">021</span> * Keywords must be:<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * <ul class='spaced-list'><a name="line.22"></a>
-<span class="sourceLineNo">023</span> * <li><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> * <li><a name="line.25"></a>
-<span class="sourceLineNo">026</span> * Lowercase ASCII.<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * </ul><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() < 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 < 0 || c0 > 25 || c1 < 0 || c1 > 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 <jk>true</jk> 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 <jk>true</jk> 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() < 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 < 0 || c0 > 25 || c1 < 0 || c1 > 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 < 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 < 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 <jk>true</jk> 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 <jk>true</jk> 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() < 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) >= 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-<jk>null</jk> 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 <jk>null</jk>.<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-<jk>null</jk> 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-<jk>null</jk> 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 <jk>null</jk>.<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-<jk>null</jk> 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-<jk>null</jk> 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 <jk>null</jk>.<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-<jk>null</jk> 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> * <p><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> * <cc>[Logging]</cc> section).<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * <a name="line.27"></a>
+<span class="sourceLineNo">028</span> * <p><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> * <p class='bcode'><a name="line.31"></a>
+<span class="sourceLineNo">032</span> * <cs>[SystemProperties]</cs><a name="line.32"></a>
+<span class="sourceLineNo">033</span> * <a name="line.33"></a>
+<span class="sourceLineNo">034</span> * <cc># Configure Jetty to log using java-util logging</cc><a name="line.34"></a>
+<span class="sourceLineNo">035</span> * <ck>org.eclipse.jetty.util.log.class</ck> = org.apache.juneau.microservice.JettyLogger<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * </p><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> * <p><a name="line.48"></a>
+<span class="sourceLineNo">049</span> * Returns the logger with name <js>"org.eclipse.jetty.util.log.javautil"</js>.<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 < 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 < 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: </li>
<li>Nested | </li>
-<li><a href="#field.summary">Field</a> | </li>
+<li>Field | </li>
<li><a href="#constructor.summary">Constr</a> | </li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail: </li>
-<li><a href="#field.detail">Field</a> | </li>
+<li>Field | </li>
<li><a href="#constructor.detail">Constr</a> | </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"> </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 <a href="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&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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <a href="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 <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> resource,
+<pre>public <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> 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> servletContext,
<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> 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 <a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.850">getResourceResolver</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a> <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 <a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl">VarResolver</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.930">getVarResolver</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl">VarResolver</a> <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 <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.946">getConfigFile</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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 <a href="../../../../org/apache/juneau/rest/StreamResource.html" title="class in org.apache.juneau.rest">StreamResource</a> <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> pathInfo)
+<pre>public <a href="../../../../org/apache/juneau/rest/StreamResource.html" title="class in org.apache.juneau.rest">StreamResource</a> <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> 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 <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> <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> name,
+<pre>protected <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> <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> 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> 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 <a href="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.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> name,
+<pre>public <a href="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.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> 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> 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 <T> T <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><T> c,
+<pre>public <T> T <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><T> c,
<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a> 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> 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> 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 <a href="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.1081">getPath</a>()</pre>
+<pre>public <a href="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.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 <a href="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.1093">getHtmlHeader</a>()</pre>
+<pre>public <a href="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.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 <a href="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.1105">getHtmlLinks</a>()</pre>
+<pre>public <a href="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.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 <a href="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.1117">getHtmlNav</a>()</pre>
+<pre>public <a href="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.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 <a href="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.1129">getHtmlAside</a>()</pre>
+<pre>public <a href="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.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 <a href="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.1141">getHtmlFooter</a>()</pre>
+<pre>public <a href="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.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 <a href="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.1153">getHtmlStylesheet</a>()</pre>
+<pre>public <a href="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.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 <a href="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.1165">getHtmlStyle</a>()</pre>
+<pre>public <a href="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.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 <a href="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.1177">getHtmlScript</a>()</pre>
+<pre>public <a href="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.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 boolean <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1189">getHtmlNoWrap</a>()</pre>
+<pre>public boolean <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 <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1201">getHtmlTemplate</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a> <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 <a href="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.1214">getHtmlNoResultsMessage</a>()</pre>
+<pre>public <a href="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.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 <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><<a href="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>> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1226">getHtmlWidgets</a>()</pre>
+<pre>public <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><<a href="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>> <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 <a href="../../../../org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1242">getLogger</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a> <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 <a href="../../../../org/apache/juneau/utils/MessageBundle.html" title="class in org.apache.juneau.utils">MessageBundle</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1257">getMessages</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/utils/MessageBundle.html" title="class in org.apache.juneau.utils">MessageBundle</a> <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 <a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1273">getInfoProvider</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a> <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 <a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1289">getCallHandler</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a> <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 <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><<a href="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> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1298">getCallRouters</a>()</pre>
+<pre>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><<a href="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> <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 <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/rest/RestContext.html#line.1311">getResource</a>()</pre>
+<pre>public <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/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 <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1322">getRestServlet</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a> <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 void <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1331">checkForInitException</a>()
+<pre>protected void <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 <a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1345">getParentContext</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a> <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 <a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau">BeanContext</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1354">getBeanContext</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau">BeanContext</a> <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 <a href="../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1376">getProperties</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a> <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 <a href="../../../../org/apache/juneau/serializer/SerializerGroup.html" title="class in org.apache.juneau.serializer">SerializerGroup</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1392">getSerializers</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/serializer/SerializerGroup.html" title="class in org.apache.juneau.serializer">SerializerGroup</a> <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 <a href="../../../../org/apache/juneau/parser/ParserGroup.html" title="class in org.apache.juneau.parser">ParserGroup</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1408">getParsers</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/parser/ParserGroup.html" title="class in org.apache.juneau.parser">ParserGroup</a> <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 <a href="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.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> name)</pre>
+<pre>public <a href="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.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> 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 <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><<a href="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>> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1429">getChildResources</a>()</pre>
+<pre>public <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><<a href="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>> <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 int <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> e)</pre>
+<pre>protected int <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> 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 boolean <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 boolean <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 boolean <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 boolean <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 boolean <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 boolean <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 <a href="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.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 <a href="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.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 <a href="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.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 <a href="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.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 <a href="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.1508">getClientVersionHeader</a>()</pre>
+<pre>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> <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 boolean <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> m)</pre>
+<pre>protected boolean <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> 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 <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><?>[] <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1535">getBeanFilters</a>()</pre>
+<pre>protected <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><?>[] <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 <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><?>[] <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1551">getPojoSwaps</a>()</pre>
+<pre>protected <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><?>[] <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 <a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest">RestParam</a>[] <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> method,
+<pre>protected <a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest">RestParam</a>[] <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> method,
boolean methodPlainParams,
<a href="../../../../org/apache/juneau/rest/UrlPathPattern.html" title="class in org.apache.juneau.rest">UrlPathPattern</a> pathPattern,
boolean 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 <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingParser.html" title="class in org.apache.juneau.urlencoding">UrlEncodingParser</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1764">getUrlEncodingParser</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingParser.html" title="class in org.apache.juneau.urlencoding">UrlEncodingParser</a> <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 <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding">UrlEncodingSerializer</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1773">getUrlEncodingSerializer</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding">UrlEncodingSerializer</a> <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 <a href="../../../../org/apache/juneau/encoders/EncoderGroup.html" title="class in org.apache.juneau.encoders">EncoderGroup</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1793">getEncoders</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/encoders/EncoderGroup.html" title="class in org.apache.juneau.encoders">EncoderGroup</a> <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 <a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>[] <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1807">getSupportedAcceptTypes</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>[] <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 <a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>[] <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1821">getSupportedContentTypes</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>[] <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 <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><<a href="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>> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1840">getDefaultRequestHeaders</a>()</pre>
+<pre>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><<a href="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>> <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 <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><<a href="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>> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1860">getDefaultResponseHeaders</a>()</pre>
+<pre>public <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><<a href="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>> <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 <a href="../../../../org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest">RestConverter</a>[] <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1879">getConverters</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest">RestConverter</a>[] <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 <a href="../../../../org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a>[] <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1898">getGuards</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a>[] <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 <a href="../../../../org/apache/juneau/rest/ResponseHandler.html" title="interface in org.apache.juneau.rest">ResponseHandler</a>[] <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1918">getResponseHandlers</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/rest/ResponseHandler.html" title="interface in org.apache.juneau.rest">ResponseHandler</a>[] <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 <a href="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.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> name)</pre>
+<pre>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> <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> 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 <a href="../../../../org/apache/juneau/rest/StreamResource.html" title="class in org.apache.juneau.rest">StreamResource</a> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1951">getFavIcon</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/rest/StreamResource.html" title="class in org.apache.juneau.rest">StreamResource</a> <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 boolean <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> p)</pre>
+<pre>protected boolean <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> 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 <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><<a href="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> <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1983">getCallMethods</a>()</pre>
+<pre>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><<a href="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> <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 void <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1990">destroy</a>()</pre>
+<pre>protected void <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 boolean <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.2011">hasChildResources</a>()</pre>
+<pre>protected boolean <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 <a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a> <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> path)</pre>
+<pre>protected <a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a> <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> 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 <a href="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.2031">getContextPath</a>()</pre>
+<pre>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> <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: </li>
<li>Nested | </li>
-<li><a href="#field.summary">Field</a> | </li>
+<li>Field | </li>
<li><a href="#constructor.summary">Constr</a> | </li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail: </li>
-<li><a href="#field.detail">Field</a> | </li>
+<li>Field | </li>
<li><a href="#constructor.detail">Constr</a> | </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> * <b>Configuration property:</b> Enable header URL parameters.<a name="line.61"></a>
-<span class="sourceLineNo">062</span> *<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * <ul><a name="line.63"></a>
-<span class="sourceLineNo">064</span> * <li><b>Name:</b> <js>"RestServlet.allowHeaderParams"</js><a name="line.64"></a>
-<span class="sourceLineNo">065</span> * <li><b>Data type:</b> <code>Boolean</code><a name="line.65"></a>
-<span class="sourceLineNo">066</span> * <li><b>Default:</b> <jk>true</jk><a name="line.66"></a>
-<span class="sourceLineNo">067</span> * </ul><a name="line.67"></a>
-<span class="sourceLineNo">068</span> *<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * <p><a name="line.69"></a>
-<span class="sourceLineNo">070</span> * When enabled, headers such as <js>"Accept"</js> and <js>"Content-Type"</js> 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: <js>"?Accept=text/json&amp;Content-Type=text/json"</js><a name="line.72"></a>
-<span class="sourceLineNo">073</span> *<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * <p><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> * <p><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> * <p><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> * <b>Configuration property:</b> Enable <js>"method"</js> 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> * <ul><a name="line.88"></a>
-<span class="sourceLineNo">089</span> * <li><b>Name:</b> <js>"RestServlet.allowMethodParam"</js><a name="line.89"></a>
-<span class="sourceLineNo">090</span> * <li><b>Data type:</b> <code>String</code><a name="line.90"></a>
-<span class="sourceLineNo">091</span> * <li><b>Default:</b> <js>""</js><a name="line.91"></a>
-<span class="sourceLineNo">092</span> * </ul><a name="line.92"></a>
-<span class="sourceLineNo">093</span> *<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * <p><a name="line.94"></a>
-<span class="sourceLineNo">095</span> * When specified, the HTTP method can be overridden by passing in a <js>"method"</js> 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: <js>"?method=OPTIONS"</js><a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * <p><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> * <p><a name="line.105"></a>
-<span class="sourceLineNo">106</span> * Note that per the <a class="doclink"<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html">HTTP specification</a>, 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> * <p><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> * <p><a name="line.113"></a>
-<span class="sourceLineNo">114</span> * Example: <js>"HEAD,OPTIONS"</js><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> * <b>Configuration property:</b> Enable <js>"body"</js> URL parameter.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> *<a name="line.120"></a>
-<span class="sourceLineNo">121</span> * <ul><a name="line.121"></a>
-<span class="sourceLineNo">122</span> * <li><b>Name:</b> <js>"RestServlet.allowBodyParam"</js><a name="line.122"></a>
-<span class="sourceLineNo">123</span> * <li><b>Data type:</b> <code>Boolean</code><a name="line.123"></a>
-<span class="sourceLineNo">124</span> * <li><b>Default:</b> <jk>true</jk><a name="line.124"></a>
-<span class="sourceLineNo">125</span> * </ul><a name="line.125"></a>
-<span class="sourceLineNo">126</span> *<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * <p><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 <js>"body"</js><a name="line.128"></a>
-<span class="sourceLineNo">129</span> * URL parameter.<a name="line.129"></a>
-<span class="sourceLineNo">130</span> * For example: <js>"?body={name:'John%20Smith',age:45}"</js><a name="line.130"></a>
-<span class="sourceLineNo">131</span> *<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * <p><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> * <p><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> * <p><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> * <b>Configuration property:</b> Render stack traces.<a name="line.144"></a>
-<span class="sourceLineNo">145</span> *<a name="line.145"></a>
-<span class="sourceLineNo">146</span> * <ul><a name="line.146"></a>
-<span class="sourceLineNo">147</span> * <li><b>Name:</b> <js>"RestServlet.renderResponseStackTraces"</js><a name="line.147"></a>
-<span class="sourceLineNo">148</span> * <li><b>Data type:</b> <code>Boolean</code><a name="line.148"></a>
-<span class="sourceLineNo">149</span> * <li><b>Default:</b> <jk>false</jk><a name="line.149"></a>
-<span class="sourceLineNo">150</span> * </ul><a name="line.150"></a>
-<span class="sourceLineNo">151</span> *<a name="line.151"></a>
-<span class="sourceLineNo">152</span> * <p><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> * <p><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> * <p><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> * <b>Configuration property:</b> Use stack trace hashes.<a name="line.165"></a>
-<span class="sourceLineNo">166</span> *<a name="line.166"></a>
-<span class="sourceLineNo">167</span> * <ul><a name="line.167"></a>
-<span class="sourceLineNo">168</span> * <li><b>Name:</b> <js>"RestServlet.useStackTraceHashes"</js><a name="line.168"></a>
-<span class="sourceLineNo">169</span> * <li><b>Data type:</b> <code>Boolean</code><a name="line.169"></a>
-<span class="sourceLineNo">170</span> * <li><b>Default:</b> <jk>true</jk><a name="line.170"></a>
-<span class="sourceLineNo">171</span> * </ul><a name="line.171"></a>
-<span class="sourceLineNo">172</span> *<a name="line.172"></a>
-<span class="sourceLineNo">173</span> * <p><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> * <p><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> * <b>Configuration property:</b> Default character encoding.<a name="line.183"></a>
-<span class="sourceLineNo">184</span> *<a name="line.184"></a>
-<span class="sourceLineNo">185</span> * <ul><a name="line.185"></a>
-<span class="sourceLineNo">186</span> * <li><b>Name:</b> <js>"RestServlet.defaultCharset"</js><a name="line.186"></a>
-<span class="sourceLineNo">187</span> * <li><b>Data type:</b> <code>String</code><a name="line.187"></a>
-<span class="sourceLineNo">188</span> * <li><b>Default:</b> <js>"utf-8"</js><a name="line.188"></a>
-<span class="sourceLineNo">189</span> * </ul><a name="line.189"></a>
-<span class="sourceLineNo">190</span> *<a name="line.190"></a>
-<span class="sourceLineNo">191</span> * <p><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> * <p><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> * <b>Configuration property:</b> 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> * <ul><a name="line.202"></a>
-<span class="sourceLineNo">203</span> * <li><b>Name:</b> <js>"RestServlet.paramFormat"</js><a name="line.203"></a>
-<span class="sourceLineNo">204</span> * <li><b>Data type:</b> <code>String</code><a name="line.204"></a>
-<span class="sourceLineNo">205</span> * <li><b>Default:</b> <js>"UON"</js><a name="line.205"></a>
-<span class="sourceLineNo">206</span> * </ul><a name="line.206"></a>
-<span class="sourceLineNo">207</span> * <p><a name="line.207"></a>
-<span class="sourceLineNo">208</span> * Possible values:<a name="line.208"></a>
-<span class="sourceLineNo">209</span> * <ul class='spaced-list'><a name="line.209"></a>
-<span class="sourceLineNo">210</span> * <li><a name="line.210"></a>
-<span class="sourceLineNo">211</span> * <js>"UON"</js> - URL-Encoded Object Notation.<a name="line.211"></a>
-<span class="sourceLineNo">212</span> * <br>This notation allows for request parameters to contain arbitrarily complex POJOs.<a name="line.212"></a>
-<span class="sourceLineNo">213</span> * <li><a name="line.213"></a>
-<span class="sourceLineNo">214</span> * <js>"PLAIN"</js> - Plain text.<a name="line.214"></a>
-<span class="sourceLineNo">215</span> * <br>This treats request parameters as plain text.<a name="line.215"></a>
-<span class="sourceLineNo">216</span> * <br>Only POJOs directly convertible from <l>Strings</l> 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> * </ul><a name="line.218"></a>
-<span class="sourceLineNo">219</span> *<a name="line.219"></a>
-<span class="sourceLineNo">220</span> * <p><a name="line.220"></a>
-<span class="sourceLineNo">221</span> * Note that the parameter value <js>"(foo)"</js> is interpreted as <js>"(foo)"</js> when using plain mode, but<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * <js>"foo"</js> when using UON mode.<a name="line.222"></a>
-<span class="sourceLineNo">223</span> *<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * <p><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> * <p><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> * <b>Configuration property:</b> REST resource resolver.<a name="line.234"></a>
-<span class="sourceLineNo">235</span> *<a name="line.235"></a>
-<span class="sourceLineNo">236</span> * <ul><a name="line.236"></a>
-<span class="sourceLineNo">237</span> * <li><b>Name:</b> <js>"RestServlet.resourceResolver"</js><a name="line.237"></a>
-<span class="sourceLineNo">238</span> * <li><b>Data type:</b> <code>Class</code> or {@link RestResourceResolver}<a name="line.238"></a>
-<span class="sourceLineNo">239</span> * <li><b>Default:</b> <jk>null</jk><a name="line.239"></a>
-<span class="sourceLineNo">240</span> * </ul><a name="line.240"></a>
-<span class="sourceLineNo">241</span> *<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * <p><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> * <p><a name="line.245"></a>
-<span class="sourceLineNo">246</span> * Applicable to servlet class.<a name="line.246"></a>
-<span class="sourceLineNo">247</span> * <br>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<String,Widget> 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<String,Widget> htmlWidgets;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span> private final Set<String> 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<?>[]<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<Class<?>,RestParam> 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<String,String> defaultRequestHeaders;<a name="line.102"></a>
+<span class="sourceLineNo">103</span> private final Map<String,Object> 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<String,String> 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<String,CallRouter> callRouters;<a name="line.115"></a>
+<span class="sourceLineNo">116</span> private final Map<String,CallMethod> callMethods;<a name="line.116"></a>
+<span class="sourceLineNo">117</span> private final Map<String,RestContext> 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<?>[][]<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<String,StreamResource> staticFilesCache = new ConcurrentHashMap<String,StreamResource>();<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<Integer,AtomicInteger> stackTraceHashes = new ConcurrentHashMap<Integer,AtomicInteger>();<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 <jk>null</jk> 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<String,RestContext>()); // 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<String> methodsFound = new LinkedList<String>(); // Temporary to help debug transient duplicate method issue.<a name="line.226"></a>
+<span class="sourceLineNo">227</span> Map<String,CallRouter.Builder> routers = new LinkedHashMap<String,CallRouter.Builder>();<a name="line.227"></a>
+<span class="sourceLineNo">228</span> Map<String,CallMethod> _javaRestMethods = new LinkedHashMap<String,CallMethod>();<a name="line.228"></a>
+<span class="sourceLineNo">229</span> Map<String,Method><a name="line.229"></a>
+<span class="sourceLineNo">230</span> _startCallMethods = new LinkedHashMap<String,Method>(),<a name="line.230"></a>
+<span class="sourceLineNo">231</span> _preCallMethods = new LinkedHashMap<String,Method>(),<a name="line.231"></a>
+<span class="sourceLineNo">232</span> _postCallMethods = new LinkedHashMap<String,Method>(),<a name="line.232"></a>
+<span class="sourceLineNo">233</span> _endCallMethods = new LinkedHashMap<String,Method>(),<a name="line.233"></a>
+<span class="sourceLineNo">234</span> _postInitMethods = new LinkedHashMap<String,Method>(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span> _postInitChildFirstMethods = new LinkedHashMap<String,Method>(),<a name="line.235"></a>
+<span class="sourceLineNo">236</span> _destroyMethods = new LinkedHashMap<String,Method>();<a name="line.236"></a>
+<span class="sourceLineNo">237</span> List<RestParam[]><a name="line.237"></a>
+<span class="sourceLineNo">238</span> _preCallMethodParams = new ArrayList<RestParam[]>(),<a name="line.238"></a>
+<span class="sourceLineNo">239</span> _postCallMethodParams = new ArrayList<RestParam[]>();<a name="line.239"></a>
+<span class="sourceLineNo">240</span> List<Class<?>[]><a name="line.240"></a>
+<span class="sourceLineNo">241</span> _startCallMethodParams = new ArrayList<Class<?>[]>(),<a name="line.241"></a>
+<span class="sourceLineNo">242</span> _endCallMethodParams = new ArrayList<Class<?>[]>(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span> _postInitMethodParams = new ArrayList<Class<?>[]>(),<a name="line.243"></a>
+<span class="sourceLineNo">244</span> _postInitChildFirstMethodParams = new ArrayList<Class<?>[]>(),<a name="line.244"></a>
+<span class="sourceLineNo">245</span> _destroyMethodParams = new ArrayList<Class<?>[]>();<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<?> interfaceClass = beanContext.getClassMeta(method.getGenericReturnType());<a name="line.263"></a>
+<span class="sourceLineNo">264</span> final Map<String,Method> 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<String> 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<?>[]<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<Class<?>,RestParam> 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<String,String> defaultRequestHeaders;<a name="line.294"></a>
-<span class="sourceLineNo">295</span> private final Map<String,Object> 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<String,String> 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<String,CallRouter> callRouters;<a name="line.307"></a>
-<span class="sourceLineNo">308</span> private final Map<String,CallMethod> callMethods;<a name="line.308"></a>
-<span class="sourceLineNo">309</span> private final Map<String,RestContext> 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<?>[][]<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<String,StreamResource> staticFilesCache = new ConcurrentHashMap<String,StreamResource>();<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<Integer,AtomicInteger> stackTraceHashes = new ConcurrentHashMap<Integer,AtomicInteger>();<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 <jk>null</jk> 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<String,RestContext>()); // 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<String> methodsFound = new LinkedList<String>(); // Temporary to help debug transient duplicate method issue.<a name="line.418"></a>
-<span class="sourceLineNo">419</span> Map<String,CallRouter.Builder> routers = new LinkedHashMap<String,CallRouter.Builder>();<a name="line.419"></a>
-<span class="sourceLineNo">420</span> Map<String,CallMethod> _javaRestMethods = new LinkedHashMap<String,CallMethod>();<a name="line.420"></a>
-<span class="sourceLineNo">421</span> Map<String,Method><a name="line.421"></a>
-<span class="sourceLineNo">422</span> _startCallMethods = new LinkedHashMap<String,Method>(),<a name="line.422"></a>
-<span class="sourceLineNo">423</span> _preCallMethods = new LinkedHashMap<String,Method>(),<a name="line.423"></a>
-<span class="sourceLineNo">424</span> _postCallMethods = new LinkedHashMap<String,Method>(),<a name="line.424"></a>
-<span class="sourceLineNo">425</span> _endCallMethods = new LinkedHashMap<String,Method>(),<a name="line.425"></a>
-<span class="sourceLineNo">426</span> _postInitMethods = new LinkedHashMap<String,Method>(),<a name="line.426"></a>
-<span class="sourceLineNo">427</span> _postInitChildFirstMethods = new LinkedHashMap<String,Method>(),<a name="line.427"></a>
-<span class="sourceLineNo">428</span> _destroyMethods = new LinkedHashMap<String,Method>();<a name="line.428"></a>
-<span class="sourceLineNo">429</span> List<RestParam[]><a name="line.429"></a>
-<span class="sourceLineNo">430</span> _preCallMethodParams = new ArrayList<RestParam[]>(),<a name="line.430"></a>
-<span class="sourceLineNo">431</span> _postCallMethodParams = new ArrayList<RestParam[]>();<a name="line.431"></a>
-<span class="sourceLineNo">432</span> List<Class<?>[]><a name="line.432"></a>
-<span class="sourceLineNo">433</span> _startCallMethodParams = new ArrayList<Class<?>[]>(),<a name="line.433"></a>
-<span class="sourceLineNo">434</span> _endCallMethodParams = new ArrayList<Class<?>[]>(),<a name="line.434"></a>
-<span class="sourceLineNo">435</span> _postInitMethodParams = new ArrayList<Class<?>[]>(),<a name="line.435"></a>
-<span class="sourceLineNo">436</span> _postInitChildFirstMethodParams = new ArrayList<Class<?>[]>(),<a name="line.436"></a>
-<span class="sourceLineNo">437</span> _destroyMethodParams = new ArrayList<Class<?>[]>();<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<?> interfaceClass = beanContext.getClassMeta(method.getGenericReturnType());<a name="line.455"></a>
-<span class="sourceLineNo">456</span> final Map<String,Method> 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) && 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<String,CallRouter> _callRouters = new LinkedHashMap<String,CallRouter>();<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<String,Object> p = (Pair<String,Object>)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<?>) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span> Class<?> c = (Class<?>)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<?> oc = (Class<?>)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<String, CallRouter.Builder> 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> * <p><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> * <ul class='spaced-list'><a name="line.41"></a>
-<span class="sourceLineNo">042</span> * <li><a name="line.42"></a>
-<span class="sourceLineNo">043</span> * Specifying the location via a <l>DirectoryResource.rootDir</l> property.<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * <li><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> * </ul><a name="line.46"></a>
-<span class="sourceLineNo">047</span> * <a name="line.47"></a>
-<span class="sourceLineNo">048</span> * <p><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> * <ul class='spaced-list'><a name="line.50"></a>
-<span class="sourceLineNo">051</span> * <li><a name="line.51"></a>
-<span class="sourceLineNo">052</span> * <l>DirectoryResource.allowViews</l> - If <jk>true</jk>, allows view and download access to files.<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * <li><a name="line.53"></a>
-<span class="sourceLineNo">054</span> * <l>DirectoryResource.allowPuts</l> - If <jk>true</jk>, allows files to be created or overwritten.<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * <li><a name="line.55"></a>
-<span class="sourceLineNo">056</span> * <l>DirectoryResource.allowDeletes</l> - If <jk>true</jk>, allows files to be deleted.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * </ul><a name="line.57"></a>
-<span class="sourceLineNo">058</span> * <a name="line.58"></a>
-<span class="sourceLineNo">059</span> * <p><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> * <p><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> * <ul class='spaced-list'><a name="line.40"></a>
+<span class="sourceLineNo">041</span> * <li><a name="line.41"></a>
+<span class="sourceLineNo">042</span> * Specifying the location via a <l>DirectoryResource.rootDir</l> property.<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * <li><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> * </ul><a name="line.45"></a>
+<span class="sourceLineNo">046</span> * <a name="line.46"></a>
+<span class="sourceLineNo">047</span> * <p><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> * <ul class='spaced-list'><a name="line.49"></a>
+<span class="sourceLineNo">050</span> * <li><a name="line.50"></a>
+<span class="sourceLineNo">051</span> * <l>DirectoryResource.allowViews</l> - If <jk>true</jk>, allows view and download access to files.<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * <li><a name="line.52"></a>
+<span class="sourceLineNo">053</span> * <l>DirectoryResource.allowPuts</l> - If <jk>true</jk>, allows files to be created or overwritten.<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * <li><a name="line.54"></a>
+<span class="sourceLineNo">055</span> * <l>DirectoryResource.allowDeletes</l> - If <jk>true</jk>, allows files to be deleted.<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * </ul><a name="line.56"></a>
+<span class="sourceLineNo">057</span> * <a name="line.57"></a>
+<span class="sourceLineNo">058</span> * <p><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> * <p><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<FileResource> l = new LinkedList<FileResource>();<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 <js>"File deleted"</js> 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 <js>"File added"</js> 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> * <p><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> * <p><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> * <p><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") && ! 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") && ! 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") && ! 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") && ! 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 && f.canRead() && ! 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 && f.canRead() && ! 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 && 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> * <p><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<FileResource> l = new LinkedList<FileResource>();<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 <js>"File deleted"</js> 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 <js>"File added"</js> 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> * <p><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> * <p><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> * <p><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") && ! 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") && ! 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") && ! 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") && ! 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 && f.canRead() && ! 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 && f.canRead() && ! 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 && 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<?>)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 != '[' && s1 != '{' && ! "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<?> c = (Class<?>)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<String> 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<String> 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<? extends String,? extends Section> map) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span> Set<String> 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<? extends String,? extends Section> 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<String> 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<Map.Entry<String,Section>> 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<Map.Entry<String,Section>>() {<a name="line.345"></a>
-<span class="sourceLineNo">346</span> @Override /* Map */<a name="line.346"></a>
-<span class="sourceLineNo">347</span> public Iterator<Map.Entry<String,Section>> iterator() {<a name="line.347"></a>
-<span class="sourceLineNo">348</span> return new Iterator<Map.Entry<String,Section>>() {<a name="line.348"></a>
-<span class="sourceLineNo">349</span> Iterator<Map.Entry<String,Section>> i = sections.entrySet().iterator();<a name="line.349"></a>
-<span class="sourceLineNo">350</span> Map.Entry<String,Section> 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<String,Section> 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<String> 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<String> 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<String>() {<a name="line.389"></a>
-<span class="sourceLineNo">390</span> @Override /* Set */<a name="line.390"></a>
-<span class="sourceLineNo">391</span> public Iterator<String> iterator() {<a name="line.391"></a>
-<span class="sourceLineNo">392</span> return new Iterator<String>() {<a name="line.392"></a>
-<span class="sourceLineNo">393</span> Iterator<String> 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<String> 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<Section> values() {<a name="line.430"></a>
-<span class="sourceLineNo">431</span> return new AbstractCollection<Section>() {<a name="line.431"></a>
-<span class="sourceLineNo">432</span> @Override /* Collection */<a name="line.432"></a>
-<span class="sourceLineNo">433</span> public Iterator<Section> iterator() {<a name="line.433"></a>
-<span class="sourceLineNo">434</span> return new Iterator<Section>() {<a name="line.434"></a>
-<span class="sourceLineNo">435</span> Iterator<Section> 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) && 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 != '[' && s1 != '{' && ! "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<?> c = (Class<?>)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<?> c = (Class<?>)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<String> 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<String> 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<? extends String,? extends Section> map) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span> Set<String> 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<? extends String,? extends Section> 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<String> 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<Map.Entry<String,Section>> 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<Map.Entry<String,Section>>() {<a name="line.354"></a>
+<span class="sourceLineNo">355</span> @Override /* Map */<a name="line.355"></a>
+<span class="sourceLineNo">356</span> public Iterator<Map.Entry<String,Section>> iterator() {<a name="line.356"></a>
+<span class="sourceLineNo">357</span> return new Iterator<Map.Entry<String,Section>>() {<a name="line.357"></a>
+<span class="sourceLineNo">358</span> Iterator<Map.Entry<String,Section>> i = sections.entrySet().iterator();<a name="line.358"></a>
+<span class="sourceLineNo">359</span> Map.Entry<String,Section> 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<String,Section> 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<String> 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<String> 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<String>() {<a name="line.398"></a>
+<span class="sourceLineNo">399</span> @Override /* Set */<a name="line.399"></a>
+<span class="sourceLineNo">400</span> public Iterator<String> iterator() {<a name="line.400"></a>
+<span class="sourceLineNo">401</span> return new Iterator<String>() {<a name="line.401"></a>
+<span class="sourceLineNo">402</span> Iterator<String> 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<String> 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<String> 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<String> 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<String> 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<Section> values() {<a name="line.439"></a>
+<span class="sourceLineNo">440</span> return new AbstractCollection<Section>() {<a name="line.440"></a>
+<span class="sourceLineNo">441</span> @Override /* Collection */<a name="line.441"></a>
+<span class="sourceLineNo">442</span> public Iterator<Section> iterator() {<a name="line.442"></a>
+<span class="sourceLineNo">443</span> return new Iterator<Section>() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span> Iterator<Section> 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<String> 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<String> 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<String> 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<String> 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<String,String> 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<String> 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 && 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<String> 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<ConfigFileListener> 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<String> 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<String,String> 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<String> 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 && 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<String> 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<String> 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<String,Section> 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<ConfigFileListener> 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<String> 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<String,Section> 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<FileResource> l = new TreeSet<FileResource>(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 <code>true</code>, 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;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;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;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;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;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("<html><body style='font-family:monospace;font-size:8pt;white-space:pre;'>");<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("<span style='color:gray'>[EMPTY]</span>");<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("<span style='color:").append(color).append("'>");<a name="line.190"></a>
-<span class="sourceLineNo">191</span> le.appendHtml(w).append("</span>");<a name="line.191"></a>
-<span class="sourceLineNo">192</span> }<a name="line.192"></a>
-<span class="sourceLineNo">193</span> w.append("</body></html>");<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;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;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;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;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;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 && 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() && ! 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&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<FileResource>, 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 && end == null && thread == null && 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<FileResource> l = new TreeSet<FileResource>(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 <code>true</code>, 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;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;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;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;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;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("<html><body style='font-family:monospace;font-size:8pt;white-space:pre;'>");<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("<span style='color:gray'>[EMPTY]</span>");<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("<span style='color:").append(color).append("'>");<a name="line.189"></a>
+<span class="sourceLineNo">190</span> le.appendHtml(w).append("</span>");<a name="line.190"></a>
+<span class="sourceLineNo">191</span> }<a name="line.191"></a>
+<span class="sourceLineNo">192</span> w.append("</body></html>");<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;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;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;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;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;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 && 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() && ! 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&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<FileResource>, 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 && end == null && thread == null && 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 Class</li>
+<li><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Next 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#fields.inherited.from.class.org.eclipse.jetty.util.log.AbstractLogger">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 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"> </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> 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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> msg,
+ long arg)</code> </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> 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>... args)</code> </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> 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> thrown)</code> </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> thrown)</code> </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> </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> ignored)</code> </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> 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>... args)</code> </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> 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> thrown)</code> </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> thrown)</code> </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> </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> fullname)</code> </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 enabled)</code> </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> 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>... args)</code> </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> 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> thrown)</code> </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> thrown)</code> </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 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 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 <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 <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> 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 <a href="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/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 void <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> 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>... args)</pre>
+</li>
+</ul>
+<a name="warn-java.lang.Throwable-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>warn</h4>
+<pre>public void <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> 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 void <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> 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> 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 void <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> 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>... args)</pre>
+</li>
+</ul>
+<a name="info-java.lang.Throwable-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>info</h4>
+<pre>public void <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> 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 void <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> 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> thrown)</pre>
+</li>
+</ul>
+<a name="isDebugEnabled--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isDebugEnabled</h4>
+<pre>public boolean <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 void <a href="../../../../src-html/org/apache/juneau/microservice/JettyLogger.html#line.112">setDebugEnabled</a>(boolean 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 void <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> 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>... args)</pre>
+</li>
+</ul>
+<a name="debug-java.lang.String-long-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>debug</h4>
+<pre>public void <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> msg,
+ long arg)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>debug</code> in interface <code>org.eclipse.jetty.util.log.Logger</code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>debug</code> in class <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 void <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> 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 void <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> 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> thrown)</pre>
+</li>
+</ul>
+<a name="newLogger-java.lang.String-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>newLogger</h4>
+<pre>protected org.eclipse.jetty.util.log.Logger <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> fullname)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>newLogger</code> in class <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 void <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> 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 Class</li>
+<li><a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Next 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#fields.inherited.from.class.org.eclipse.jetty.util.log.AbstractLogger">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 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 Class</li>
+<li><a href="../../../../org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Next 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> 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><<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> 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> 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> 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> cfPath,
boolean 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><?> 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> 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> 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>... 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 <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>... args)
+<pre>protected <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>... 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 <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a> <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 <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a> <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> cfPath,
+<pre>public <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a> <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> cfPath,
boolean 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 void <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> cf)</pre>
+<pre>public void <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> 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 void <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> mf)</pre>
+<pre>public void <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> 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 <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a> <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>... contents)
+<pre>public <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a> <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>... 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 void <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> 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 void <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> 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 void <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><?> 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 void <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><?> 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 <a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a> <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.266">createVarResolver</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a> <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 <a href="../../../../org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils">Args</a> <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.288">getArgs</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils">Args</a> <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 <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.385">getConfig</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a> <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 <a href="../../../../org/apache/juneau/utils/ManifestFile.html" title="class in org.apache.juneau.utils">ManifestFile</a> <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.409">getManifest</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/utils/ManifestFile.html" title="class in org.apache.juneau.utils">ManifestFile</a> <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 <a href="../../../../org/apache/juneau/svl/VarResolver.html" title="class in org.apache.juneau.svl">VarResolver</a> <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 <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> <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 <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a> <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.430">start</a>()
+<pre>public <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a> <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 void <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 <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a> <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.561">join</a>()
+<pre>public <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a> <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 <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a> <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.576">stop</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/microservice/Microservice.html" title="class in org.apache.juneau.microservice">Microservice</a> <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 void <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.584">kill</a>()</pre>
+<pre>public void <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 void <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.601">onStart</a>()</pre>
+<pre>protected void <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 void <a href="../../../../src-html/org/apache/juneau/microservice/Microservice.html#line.609">onStop</a>()</pre>
+<pre>protected void <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 void <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> cf)</pre>
+<pre>protected void <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> 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 void <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> cf,
+<pre>protected void <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> 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><<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> 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 Class</li>
+<li><a href="../../../../org/apache/juneau/microservice/JettyLogger.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice"><span class="typeNameLink">Next 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 <a href="../../../../src-html/org/apache/juneau/microservice/Resource.html#line.57">Resource</a>()</pre>
+<pre>public <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 void <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> config)
+public void <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> 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 <a href="../../../../src-html/org/apache/juneau/microservice/ResourceGroup.html#line.58">ResourceGroup</a>()</pre>
+<pre>public <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 void <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> config)
+public void <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> 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 <a href="../../../../src-html/org/apache/juneau/microservice/ResourceJenaGroup.html#line.72">ResourceJenaGroup</a>()</pre>
+<pre>public <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 void <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> config)
+public void <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> 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 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 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>... 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><? extends <a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a>> 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> 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> 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> 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> 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><?> 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> 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> 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> 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> 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> 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>[] 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> 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> 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 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> 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> 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> 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><? extends <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a>> 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> 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><? extends <a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a>> 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> 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><? extends <a href="../../../../org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a>> 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> 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> 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> 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><<a href="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>> 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> 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> 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 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><? extends <a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>> 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> 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>... 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>... 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>... 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>... 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 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 <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> config,
+<pre>public <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> 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><?> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... vars)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> name,
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> configFile)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> key,
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><<a href="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>> properties)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><<a href="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>> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... beanFilters)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... pojoSwaps)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><? extends <a href="../../../../org/apache/juneau/serializer/SerializerListener.html" title="class in org.apache.juneau.serializer">SerializerListener</a>> listener)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><? extends <a href="../../../../org/apache/juneau/serializer/SerializerListener.html" title="class in org.apache.juneau.serializer">SerializerListener</a>> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><? extends <a href="../../../../org/apache/juneau/parser/ParserListener.html" title="class in org.apache.juneau.parser">ParserListener</a>> listener)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><? extends <a href="../../../../org/apache/juneau/parser/ParserListener.html" title="class in org.apache.juneau.parser">ParserListener</a>> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> contextPath)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><? extends <a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest">RestParam</a>>... paramResolvers)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><? extends <a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest">RestParam</a>>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... serializers)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... serializers)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... parsers)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... parsers)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... encoders)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... encoders)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... converters)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... converters)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... guards)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... guards)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... mimeTypes)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> name,
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... headers)
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> name,
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... headers)
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... responseHandlers)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... responseHandlers)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> path,
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... children)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... children)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... mediaTypes)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... mediaTypes)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... mediaTypes)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... mediaTypes)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> favIcon)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?> resourceClass,
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?> 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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?> resourceClass,
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><?> 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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><? extends <a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>> resourceResolver)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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><? extends <a href="../../../../org/apache/juneau/rest/RestResourceResolver.html" title="interface in org.apache.juneau.rest">RestResourceResolver</a>> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> resourceResolver)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1129">setAllowHeaderParams</a>(boolean 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>... 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1157">setAllowBodyParam</a>(boolean 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1171">setRenderResponseStackTraces</a>(boolean 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1185">setUseStackTraceHashes</a>(boolean 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> path)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> clientVersionHeader)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> value)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>[] value)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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>[] 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> value)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> value)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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 <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> value)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> <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> 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><<a href="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><? 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>>></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>[] 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> 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> cfPath,
boolean 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> 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>... 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 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 <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>... args)
+<pre>public <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>... 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 <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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 void <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>[] args)
+<pre>public static void <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>[] 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 <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.111">start</a>()
+<pre>public <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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: <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 <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.125">join</a>()
+<pre>public <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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: <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 <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.131">stop</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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: <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 int <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 int <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 <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/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 <a href="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/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 void <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 <a href="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/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 <a href="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/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 <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/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 org.eclipse.jetty.server.Server <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.323">createServer</a>()
+<pre>protected org.eclipse.jetty.server.Server <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 <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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> servlet,
+<pre>public <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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> 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> 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 <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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> name,
+<pre>public <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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> 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> 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 org.eclipse.jetty.server.Server <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.408">getServer</a>()</pre>
+<pre>public org.eclipse.jetty.server.Server <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 int <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.435">startServer</a>()
+<pre>protected int <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 <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><<a href="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><? 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>>> <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 void <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> cf)</pre>
+<pre>protected void <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> 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 <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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> jettyXml)</pre>
+<pre>public <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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> 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 void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.594">onCreateServer</a>()</pre>
+<pre>protected void <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 void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.602">onStartServer</a>()</pre>
+<pre>protected void <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 void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.610">onPostStartServer</a>()</pre>
+<pre>protected void <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 void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.618">onStopServer</a>()</pre>
+<pre>protected void <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 void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.626">onPostStopServer</a>()</pre>
+<pre>protected void <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 <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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> cfPath,
+<pre>public <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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> cfPath,
boolean 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: <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 <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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>... contents)
+<pre>public <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <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>... 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: <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 Class</li>
-<li><a href="../../../../../org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Next 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 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 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
-<li><a href="../../../../../org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources"><span class="typeNameLink">Next 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 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> req,
+ <a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> 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> req,
+ <a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> 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 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 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 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 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 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 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 <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 <a href="../../../../../org/apache/juneau/rest/labels/ResourceDescription.html" title="class in org.apache.juneau.rest.labels">ResourceDescription</a>[] <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 <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> <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> req,
+ <a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> 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 <a href="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/DebugResource.html#line.69">createJettyDump</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req,
+ <a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li>Field | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 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<FileResource> l = new TreeSet<FileResource>(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 <code>true</code>, 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;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;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;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;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;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("<html><body style='font-family:monospace;font-size:8pt;white-space:pre;'>");<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("<span style='color:gray'>[EMPTY]</span>");<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("<span style='color:").append(color).append("'>");<a name="line.190"></a>
-<span class="sourceLineNo">191</span> le.appendHtml(w).append("</span>");<a name="line.191"></a>
-<span class="sourceLineNo">192</span> }<a name="line.192"></a>
-<span class="sourceLineNo">193</span> w.append("</body></html>");<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;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;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;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;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;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 && 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() && ! 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&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<FileResource>, 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 && end == null && thread == null && 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<FileResource> l = new TreeSet<FileResource>(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 <code>true</code>, 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;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;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;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;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;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("<html><body style='font-family:monospace;font-size:8pt;white-space:pre;'>");<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("<span style='color:gray'>[EMPTY]</span>");<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("<span style='color:").append(color).append("'>");<a name="line.189"></a>
+<span class="sourceLineNo">190</span> le.appendHtml(w).append("</span>");<a name="line.190"></a>
+<span class="sourceLineNo">191</span> }<a name="line.191"></a>
+<span class="sourceLineNo">192</span> w.append("</body></html>");<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;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;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;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;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;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 && 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() && ! 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&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<FileResource>, 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 && end == null && thread == null && 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> * <p><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> * <p><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><K,V> (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><K,V>)
<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><T> (implements org.apache.juneau.<a href="org/apache/juneau/Delegate.html" title="interface in org.apache.juneau">Delegate</a><T>)
@@ -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> * <p><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> * <ul class='spaced-list'><a name="line.28"></a>
-<span class="sourceLineNo">029</span> * <li><a name="line.29"></a>
-<span class="sourceLineNo">030</span> * <code class='snippet'>$ARG{...}</code> - 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> * <h6 class='figure'>Example:</h6><a name="line.32"></a>
-<span class="sourceLineNo">033</span> * <p class='bcode'><a name="line.33"></a>
-<span class="sourceLineNo">034</span> * String firstArg = request.getVarResolver().resolve(<js>"$ARG{0}"</js>); <jc>// First argument.</jc><a name="line.34"></a>
-<span class="sourceLineNo">035</span> * String namedArg = request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>); <jc>// Named argument (e.g. "myarg=foo"). </jc><a name="line.35"></a>
-<span class="sourceLineNo">036</span> * </p><a name="line.36"></a>
-<span class="sourceLineNo">037</span> * <li><a name="line.37"></a>
-<span class="sourceLineNo">038</span> * <code class='snippet'>$MF{...}</code> - 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> * <h6 class='figure'>Example:</h6><a name="line.40"></a>
-<span class="sourceLineNo">041</span> * <p class='bcode'><a name="line.41"></a>
-<span class="sourceLineNo">042</span> * String mainClass = request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>); <jc>// Main class. </jc><a name="line.42"></a>
-<span class="sourceLineNo">043</span> * </p><a name="line.43"></a>
-<span class="sourceLineNo">044</span> * </ul><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 <code>$ARGS</code> and <code>$MF</code> 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> * <p><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> * <ul class='spaced-list'><a name="line.27"></a>
+<span class="sourceLineNo">028</span> * <li><a name="line.28"></a>
+<span class="sourceLineNo">029</span> * <code class='snippet'>$ARG{...}</code> - 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> * <h6 class='figure'>Example:</h6><a name="line.31"></a>
+<span class="sourceLineNo">032</span> * <p class='bcode'><a name="line.32"></a>
+<span class="sourceLineNo">033</span> * String firstArg = request.getVarResolver().resolve(<js>"$ARG{0}"</js>); <jc>// First argument.</jc><a name="line.33"></a>
+<span class="sourceLineNo">034</span> * String namedArg = request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>); <jc>// Named argument (e.g. "myarg=foo"). </jc><a name="line.34"></a>
+<span class="sourceLineNo">035</span> * </p><a name="line.35"></a>
+<span class="sourceLineNo">036</span> * <li><a name="line.36"></a>
+<span class="sourceLineNo">037</span> * <code class='snippet'>$MF{...}</code> - 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> * <h6 class='figure'>Example:</h6><a name="line.39"></a>
+<span class="sourceLineNo">040</span> * <p class='bcode'><a name="line.40"></a>
+<span class="sourceLineNo">041</span> * String mainClass = request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>); <jc>// Main class. </jc><a name="line.41"></a>
+<span class="sourceLineNo">042</span> * </p><a name="line.42"></a>
+<span class="sourceLineNo">043</span> * </ul><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 <code>$ARGS</code> and <code>$MF</code> 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> * <p><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> * <ul class='spaced-list'><a name="line.28"></a>
-<span class="sourceLineNo">029</span> * <li><a name="line.29"></a>
-<span class="sourceLineNo">030</span> * <jk>$ARG{...}</jk> - Command line arguments.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * <br>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> * <h6>Example:</h6><a name="line.33"></a>
-<span class="sourceLineNo">034</span> * <p class='bcode'><a name="line.34"></a>
-<span class="sourceLineNo">035</span> * String firstArg = request.getVarResolver().resolve(<js>"$ARG{0}"</js>); <jc>// First argument.</jc><a name="line.35"></a>
-<span class="sourceLineNo">036</span> * String namedArg = request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>); <jc>// Named argument (e.g. "myarg=foo"). </jc><a name="line.36"></a>
-<span class="sourceLineNo">037</span> * </p><a name="line.37"></a>
-<span class="sourceLineNo">038</span> * <li><a name="line.38"></a>
-<span class="sourceLineNo">039</span> * <jk>$MF{...}</jk> - Manifest file entries.<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * <a name="line.40"></a>
-<span class="sourceLineNo">041</span> * <h6>Example:</h6><a name="line.41"></a>
-<span class="sourceLineNo">042</span> * <p class='bcode'><a name="line.42"></a>
-<span class="sourceLineNo">043</span> * String mainClass = request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>); <jc>// Main class. </jc><a name="line.43"></a>
-<span class="sourceLineNo">044</span> * </p><a name="line.44"></a>
-<span class="sourceLineNo">045</span> * </ul><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> * <p><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> * <ul class='spaced-list'><a name="line.27"></a>
+<span class="sourceLineNo">028</span> * <li><a name="line.28"></a>
+<span class="sourceLineNo">029</span> * <jk>$ARG{...}</jk> - Command line arguments.<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * <br>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> * <h6>Example:</h6><a name="line.32"></a>
+<span class="sourceLineNo">033</span> * <p class='bcode'><a name="line.33"></a>
+<span class="sourceLineNo">034</span> * String firstArg = request.getVarResolver().resolve(<js>"$ARG{0}"</js>); <jc>// First argument.</jc><a name="line.34"></a>
+<span class="sourceLineNo">035</span> * String namedArg = request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>); <jc>// Named argument (e.g. "myarg=foo"). </jc><a name="line.35"></a>
+<span class="sourceLineNo">036</span> * </p><a name="line.36"></a>
+<span class="sourceLineNo">037</span> * <li><a name="line.37"></a>
+<span class="sourceLineNo">038</span> * <jk>$MF{...}</jk> - Manifest file entries.<a name="line.38"></a>
+<span class="sourceLineNo">039</span> * <a name="line.39"></a>
+<span class="sourceLineNo">040</span> * <h6>Example:</h6><a name="line.40"></a>
+<span class="sourceLineNo">041</span> * <p class='bcode'><a name="line.41"></a>
+<span class="sourceLineNo">042</span> * String mainClass = request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>); <jc>// Main class. </jc><a name="line.42"></a>
+<span class="sourceLineNo">043</span> * </p><a name="line.43"></a>
+<span class="sourceLineNo">044</span> * </ul><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> * <p><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> * <ul class='spaced-list'><a name="line.29"></a>
-<span class="sourceLineNo">030</span> * <li><a name="line.30"></a>
-<span class="sourceLineNo">031</span> * <jk>$ARG{...}</jk> - Command line arguments.<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * <br>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> * <h6>Example:</h6><a name="line.34"></a>
-<span class="sourceLineNo">035</span> * <p class='bcode'><a name="line.35"></a>
-<span class="sourceLineNo">036</span> * String firstArg = request.getVarResolver().resolve(<js>"$ARG{0}"</js>); <jc>// First argument.</jc><a name="line.36"></a>
-<span class="sourceLineNo">037</span> * String namedArg = request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>); <jc>// Named argument (e.g. "myarg=foo"). </jc><a name="line.37"></a>
-<span class="sourceLineNo">038</span> * </p><a name="line.38"></a>
-<span class="sourceLineNo">039</span> * <li><a name="line.39"></a>
-<span class="sourceLineNo">040</span> * <jk>$MF{...}</jk> - Manifest file entries.<a name="line.40"></a>
-<span class="sourceLineNo">041</span> * <a name="line.41"></a>
-<span class="sourceLineNo">042</span> * <h6>Example:</h6><a name="line.42"></a>
-<span class="sourceLineNo">043</span> * <p class='bcode'><a name="line.43"></a>
-<span class="sourceLineNo">044</span> * String mainClass = request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>); <jc>// Main class. </jc><a name="line.44"></a>
-<span class="sourceLineNo">045</span> * </p><a name="line.45"></a>
-<span class="sourceLineNo">046</span> * </ul><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 <code>$ARGS</code> and <code>$MF</code> 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> * <p><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> * <ul class='spaced-list'><a name="line.28"></a>
+<span class="sourceLineNo">029</span> * <li><a name="line.29"></a>
+<span class="sourceLineNo">030</span> * <jk>$ARG{...}</jk> - Command line arguments.<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * <br>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> * <h6>Example:</h6><a name="line.33"></a>
+<span class="sourceLineNo">034</span> * <p class='bcode'><a name="line.34"></a>
+<span class="sourceLineNo">035</span> * String firstArg = request.getVarResolver().resolve(<js>"$ARG{0}"</js>); <jc>// First argument.</jc><a name="line.35"></a>
+<span class="sourceLineNo">036</span> * String namedArg = request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>); <jc>// Named argument (e.g. "myarg=foo"). </jc><a name="line.36"></a>
+<span class="sourceLineNo">037</span> * </p><a name="line.37"></a>
+<span class="sourceLineNo">038</span> * <li><a name="line.38"></a>
+<span class="sourceLineNo">039</span> * <jk>$MF{...}</jk> - Manifest file entries.<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * <a name="line.40"></a>
+<span class="sourceLineNo">041</span> * <h6>Example:</h6><a name="line.41"></a>
+<span class="sourceLineNo">042</span> * <p class='bcode'><a name="line.42"></a>
+<span class="sourceLineNo">043</span> * String mainClass = request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>); <jc>// Main class. </jc><a name="line.43"></a>
+<span class="sourceLineNo">044</span> * </p><a name="line.44"></a>
+<span class="sourceLineNo">045</span> * </ul><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 <code>$ARGS</code> and <code>$MF</code> 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>