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/08/14 00:27:37 UTC
[01/25] incubator-juneau-website git commit: Add @RestHook support.
Repository: incubator-juneau-website
Updated Branches:
refs/heads/asf-site 58c75a058 -> 84931d4db
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/HookEvent.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/HookEvent.html b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/HookEvent.html
new file mode 100644
index 0000000..54908bb
--- /dev/null
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/HookEvent.html
@@ -0,0 +1,491 @@
+<!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.rest.annotation;<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>import java.util.*;<a name="line.16"></a>
+<span class="sourceLineNo">017</span>import java.util.logging.*;<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>import javax.servlet.*;<a name="line.19"></a>
+<span class="sourceLineNo">020</span>import javax.servlet.http.*;<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.dto.swagger.*;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.juneau.http.*;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.juneau.ini.*;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.juneau.internal.*;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.juneau.rest.*;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.juneau.utils.*;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>/**<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * Identifies servlet and REST call lifecycle events which cause {@link RestHook @RestHook}-annotated Java methods<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * to be called.<a name="line.32"></a>
+<span class="sourceLineNo">033</span> */<a name="line.33"></a>
+<span class="sourceLineNo">034</span>public enum HookEvent {<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> * Identifies a method that should be called immediately after the <code>HttpServlet.service(HttpServletRequest, HttpServletResponse)</code><a name="line.37"></a>
+<span class="sourceLineNo">038</span> * method is called.<a name="line.38"></a>
+<span class="sourceLineNo">039</span> *<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * <p><a name="line.40"></a>
+<span class="sourceLineNo">041</span> * Note that you only have access to the raw request and response objects at this point.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * <p><a name="line.43"></a>
+<span class="sourceLineNo">044</span> * The list of valid parameter types are as follows:<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * <ul><a name="line.45"></a>
+<span class="sourceLineNo">046</span> * <li>Servlet request/response objects:<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * <ul><a name="line.47"></a>
+<span class="sourceLineNo">048</span> * <li>{@link HttpServletRequest}<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * <li>{@link HttpServletResponse}<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * </ul><a name="line.50"></a>
+<span class="sourceLineNo">051</span> * </ul><a name="line.51"></a>
+<span class="sourceLineNo">052</span> *<a name="line.52"></a>
+<span class="sourceLineNo">053</span> * <h6 class='figure'>Example:</h6><a name="line.53"></a>
+<span class="sourceLineNo">054</span> * <p class='bcode'><a name="line.54"></a>
+<span class="sourceLineNo">055</span> * <ja>@RestResource</ja>(...)<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * <jk>public class</jk> MyResource <jk>extends</jk> RestServletDefault {<a name="line.56"></a>
+<span class="sourceLineNo">057</span> *<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * <jc>// Add a request attribute to all incoming requests.</jc><a name="line.58"></a>
+<span class="sourceLineNo">059</span> * <ja>@RestHook</ja>(<jsf>START_CALL</jsf>)<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * <jk>public void</jk> onStartCall(HttpServletRequest req) {<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * req.setAttribute(<js>"foobar"</js>, <jk>new</jk> FooBar());<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * }<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * }<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * </p><a name="line.64"></a>
+<span class="sourceLineNo">065</span> *<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * <h5 class='section'>Notes:</h5><a name="line.66"></a>
+<span class="sourceLineNo">067</span> * <ul class='spaced-list'><a name="line.67"></a>
+<span class="sourceLineNo">068</span> * <li>If the method returns any value, it is ignored.<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * <li>Multiple START_CALL methods can be defined on a class.<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * <br>START_CALL methods on parent classes are invoked before START_CALL methods on child classes.<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * <br>The order of START_CALL method invocations within a class is alphabetical, then by parameter count, then by parameter types.<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * <li>The method can throw any exception.<a name="line.72"></a>
+<span class="sourceLineNo">073</span> * <br>{@link RestException RestExceptions} can be thrown to cause a particular HTTP error status code.<a name="line.73"></a>
+<span class="sourceLineNo">074</span> * <br>All other exceptions cause an HTTP 500 error status code.<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * <br>The method is still considered part of the parent class for ordering purposes even though it's<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * overridden by the child class.<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * </ul><a name="line.78"></a>
+<span class="sourceLineNo">079</span> */<a name="line.79"></a>
+<span class="sourceLineNo">080</span> START_CALL,<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> * Identifies a method that gets called immediately before the <ja>@RestMethod</ja> annotated method gets called.<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> * At this point, the {@link RestRequest} object has been fully initialized, and all {@link RestGuard} and<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * {@link RestMatcher} objects have been called.<a name="line.87"></a>
+<span class="sourceLineNo">088</span> *<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * <p><a name="line.89"></a>
+<span class="sourceLineNo">090</span> * The list of valid parameter types are as follows:<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * <ul><a name="line.91"></a>
+<span class="sourceLineNo">092</span> * <li>Servlet request/response objects:<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * <ul><a name="line.93"></a>
+<span class="sourceLineNo">094</span> * <li>{@link HttpServletRequest}<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * <li>{@link HttpServletResponse}<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * </ul><a name="line.96"></a>
+<span class="sourceLineNo">097</span> * <li>Extended request/response objects:<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * <ul><a name="line.98"></a>
+<span class="sourceLineNo">099</span> * <li>{@link RestRequest}<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * <li>{@link RestResponse}<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * </ul><a name="line.101"></a>
+<span class="sourceLineNo">102</span> * <li>Header objects:<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * <ul><a name="line.103"></a>
+<span class="sourceLineNo">104</span> * <li>{@link Accept}<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * <li>{@link AcceptCharset}<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * <li>{@link AcceptEncoding}<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * <li>{@link AcceptLanguage}<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * <li>{@link Authorization}<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * <li>{@link CacheControl}<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * <li>{@link Connection}<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * <li>{@link ContentLength}<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * <li>{@link ContentType}<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * <li>{@link org.apache.juneau.http.Date}<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * <li>{@link Expect}<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * <li>{@link From}<a name="line.115"></a>
+<span class="sourceLineNo">116</span> * <li>{@link Host}<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * <li>{@link IfMatch}<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * <li>{@link IfModifiedSince}<a name="line.118"></a>
+<span class="sourceLineNo">119</span> * <li>{@link IfNoneMatch}<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * <li>{@link IfRange}<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * <li>{@link IfUnmodifiedSince}<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * <li>{@link MaxForwards}<a name="line.122"></a>
+<span class="sourceLineNo">123</span> * <li>{@link Pragma}<a name="line.123"></a>
+<span class="sourceLineNo">124</span> * <li>{@link ProxyAuthorization}<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * <li>{@link Range}<a name="line.125"></a>
+<span class="sourceLineNo">126</span> * <li>{@link Referer}<a name="line.126"></a>
+<span class="sourceLineNo">127</span> * <li>{@link TE}<a name="line.127"></a>
+<span class="sourceLineNo">128</span> * <li>{@link UserAgent}<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * <li>{@link Upgrade}<a name="line.129"></a>
+<span class="sourceLineNo">130</span> * <li>{@link Via}<a name="line.130"></a>
+<span class="sourceLineNo">131</span> * <li>{@link Warning}<a name="line.131"></a>
+<span class="sourceLineNo">132</span> * <li>{@link TimeZone}<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * </ul><a name="line.133"></a>
+<span class="sourceLineNo">134</span> * <li>Other objects:<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * <ul><a name="line.135"></a>
+<span class="sourceLineNo">136</span> * <li>{@link ResourceBundle}<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * <li>{@link MessageBundle}<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * <li>{@link InputStream}<a name="line.138"></a>
+<span class="sourceLineNo">139</span> * <li>{@link ServletInputStream}<a name="line.139"></a>
+<span class="sourceLineNo">140</span> * <li>{@link Reader}<a name="line.140"></a>
+<span class="sourceLineNo">141</span> * <li>{@link OutputStream}<a name="line.141"></a>
+<span class="sourceLineNo">142</span> * <li>{@link ServletOutputStream}<a name="line.142"></a>
+<span class="sourceLineNo">143</span> * <li>{@link Writer}<a name="line.143"></a>
+<span class="sourceLineNo">144</span> * <li>{@link RequestHeaders}<a name="line.144"></a>
+<span class="sourceLineNo">145</span> * <li>{@link RequestQuery}<a name="line.145"></a>
+<span class="sourceLineNo">146</span> * <li>{@link RequestFormData}<a name="line.146"></a>
+<span class="sourceLineNo">147</span> * <li>{@link HttpMethod}<a name="line.147"></a>
+<span class="sourceLineNo">148</span> * <li>{@link Logger}<a name="line.148"></a>
+<span class="sourceLineNo">149</span> * <li>{@link JuneauLogger}<a name="line.149"></a>
+<span class="sourceLineNo">150</span> * <li>{@link RestContext}<a name="line.150"></a>
+<span class="sourceLineNo">151</span> * <li>{@link org.apache.juneau.parser.Parser}<a name="line.151"></a>
+<span class="sourceLineNo">152</span> * <li>{@link Locale}<a name="line.152"></a>
+<span class="sourceLineNo">153</span> * <li>{@link Swagger}<a name="line.153"></a>
+<span class="sourceLineNo">154</span> * <li>{@link RequestPathMatch}<a name="line.154"></a>
+<span class="sourceLineNo">155</span> * <li>{@link RequestBody}<a name="line.155"></a>
+<span class="sourceLineNo">156</span> * <li>{@link ConfigFile}<a name="line.156"></a>
+<span class="sourceLineNo">157</span> * <li>{@link UriContext}<a name="line.157"></a>
+<span class="sourceLineNo">158</span> * <li>{@link UriResolver}<a name="line.158"></a>
+<span class="sourceLineNo">159</span> * </ul><a name="line.159"></a>
+<span class="sourceLineNo">160</span> * </ul><a name="line.160"></a>
+<span class="sourceLineNo">161</span> *<a name="line.161"></a>
+<span class="sourceLineNo">162</span> * <h6 class='figure'>Example:</h6><a name="line.162"></a>
+<span class="sourceLineNo">163</span> * <p class='bcode'><a name="line.163"></a>
+<span class="sourceLineNo">164</span> * <ja>@RestResource</ja>(...)<a name="line.164"></a>
+<span class="sourceLineNo">165</span> * <jk>public class</jk> MyResource <jk>extends</jk> RestServletDefault {<a name="line.165"></a>
+<span class="sourceLineNo">166</span> *<a name="line.166"></a>
+<span class="sourceLineNo">167</span> * <jc>// Log the incoming request.</jc><a name="line.167"></a>
+<span class="sourceLineNo">168</span> * <ja>@RestHook</ja>(<jsf>PRE_CALL</jsf>)<a name="line.168"></a>
+<span class="sourceLineNo">169</span> * <jk>public void</jk> onPreCall(Accept accept, Logger logger) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span> * logger.fine(<js>"Accept {0} header found."</js>, accept);<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> * </p><a name="line.173"></a>
+<span class="sourceLineNo">174</span> *<a name="line.174"></a>
+<span class="sourceLineNo">175</span> * <h5 class='section'>Notes:</h5><a name="line.175"></a>
+<span class="sourceLineNo">176</span> * <ul class='spaced-list'><a name="line.176"></a>
+<span class="sourceLineNo">177</span> * <li>If the method returns any value, it is ignored.<a name="line.177"></a>
+<span class="sourceLineNo">178</span> * <li>Multiple PRE_CALL methods can be defined on a class.<a name="line.178"></a>
+<span class="sourceLineNo">179</span> * <br>PRE_CALL methods on parent classes are invoked before PRE_CALL methods on child classes.<a name="line.179"></a>
+<span class="sourceLineNo">180</span> * <br>The order of PRE_CALL method invocations within a class is alphabetical, then by parameter count, then by parameter types.<a name="line.180"></a>
+<span class="sourceLineNo">181</span> * <li>The method can throw any exception.<a name="line.181"></a>
+<span class="sourceLineNo">182</span> * <br>{@link RestException RestExceptions} can be thrown to cause a particular HTTP error status code.<a name="line.182"></a>
+<span class="sourceLineNo">183</span> * <br>All other exceptions cause an HTTP 500 error status code.<a name="line.183"></a>
+<span class="sourceLineNo">184</span> * <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.<a name="line.184"></a>
+<span class="sourceLineNo">185</span> * <br>The method is still considered part of the parent class for ordering purposes even though it's<a name="line.185"></a>
+<span class="sourceLineNo">186</span> * overridden by the child class.<a name="line.186"></a>
+<span class="sourceLineNo">187</span> * <li>It's advisable not to mess around with the HTTP body itself since you may end up consuming the body<a name="line.187"></a>
+<span class="sourceLineNo">188</span> * before the actual REST method has a chance to use it.<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> PRE_CALL,<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span> /**<a name="line.193"></a>
+<span class="sourceLineNo">194</span> * Identifies a method that gets called immediately after the <ja>@RestMethod</ja> annotated method gets called.<a name="line.194"></a>
+<span class="sourceLineNo">195</span> *<a name="line.195"></a>
+<span class="sourceLineNo">196</span> * <p><a name="line.196"></a>
+<span class="sourceLineNo">197</span> * At this point, the output object returned by the method call has been set on the response, but<a name="line.197"></a>
+<span class="sourceLineNo">198</span> * {@link RestConverter RestConverters} have not yet been executed and the response has not yet been written.<a name="line.198"></a>
+<span class="sourceLineNo">199</span> *<a name="line.199"></a>
+<span class="sourceLineNo">200</span> * <p><a name="line.200"></a>
+<span class="sourceLineNo">201</span> * The list of valid parameter types are the same as {@link #PRE_CALL}.<a name="line.201"></a>
+<span class="sourceLineNo">202</span> *<a name="line.202"></a>
+<span class="sourceLineNo">203</span> * <h6 class='figure'>Example:</h6><a name="line.203"></a>
+<span class="sourceLineNo">204</span> * <p class='bcode'><a name="line.204"></a>
+<span class="sourceLineNo">205</span> * <ja>@RestResource</ja>(...)<a name="line.205"></a>
+<span class="sourceLineNo">206</span> * <jk>public class</jk> MyResource <jk>extends</jk> RestServletDefault {<a name="line.206"></a>
+<span class="sourceLineNo">207</span> *<a name="line.207"></a>
+<span class="sourceLineNo">208</span> * <jc>// Log the result of the request.</jc><a name="line.208"></a>
+<span class="sourceLineNo">209</span> * <ja>@RestHook</ja>(<jsf>POST_CALL</jsf>)<a name="line.209"></a>
+<span class="sourceLineNo">210</span> * <jk>public void</jk> onPostCall(RestResponse res, Logger logger) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span> * logger.fine(<js>Output {0} was set on the response."</js>, res.getOutput());<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> * </p><a name="line.214"></a>
+<span class="sourceLineNo">215</span> *<a name="line.215"></a>
+<span class="sourceLineNo">216</span> * <h5 class='section'>Notes:</h5><a name="line.216"></a>
+<span class="sourceLineNo">217</span> * <ul class='spaced-list'><a name="line.217"></a>
+<span class="sourceLineNo">218</span> * <li>If the method returns any value, it is ignored.<a name="line.218"></a>
+<span class="sourceLineNo">219</span> * <li>Multiple POST_CALL methods can be defined on a class.<a name="line.219"></a>
+<span class="sourceLineNo">220</span> * <br>POST_CALL methods on parent classes are invoked before POST_CALL methods on child classes.<a name="line.220"></a>
+<span class="sourceLineNo">221</span> * <br>The order of POST_CALL method invocations within a class is alphabetical, then by parameter count, then by parameter types.<a name="line.221"></a>
+<span class="sourceLineNo">222</span> * <li>The method can throw any exception, although at this point it is too late to set an HTTP error status code.<a name="line.222"></a>
+<span class="sourceLineNo">223</span> * <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.<a name="line.223"></a>
+<span class="sourceLineNo">224</span> * <br>The method is still considered part of the parent class for ordering purposes even though it's<a name="line.224"></a>
+<span class="sourceLineNo">225</span> * overridden by the child class.<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * </ul><a name="line.226"></a>
+<span class="sourceLineNo">227</span> */<a name="line.227"></a>
+<span class="sourceLineNo">228</span> POST_CALL,<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span> /**<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * Identifies a method that gets called right before we exit the servlet service method.<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> * At this point, the output has been written and flushed.<a name="line.234"></a>
+<span class="sourceLineNo">235</span> *<a name="line.235"></a>
+<span class="sourceLineNo">236</span> * <p><a name="line.236"></a>
+<span class="sourceLineNo">237</span> * The list of valid parameter types are as follows:<a name="line.237"></a>
+<span class="sourceLineNo">238</span> * <ul><a name="line.238"></a>
+<span class="sourceLineNo">239</span> * <li>Servlet request/response objects:<a name="line.239"></a>
+<span class="sourceLineNo">240</span> * <ul><a name="line.240"></a>
+<span class="sourceLineNo">241</span> * <li>{@link HttpServletRequest}<a name="line.241"></a>
+<span class="sourceLineNo">242</span> * <li>{@link HttpServletResponse}<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * </ul><a name="line.243"></a>
+<span class="sourceLineNo">244</span> * </ul><a name="line.244"></a>
+<span class="sourceLineNo">245</span> *<a name="line.245"></a>
+<span class="sourceLineNo">246</span> * <p><a name="line.246"></a>
+<span class="sourceLineNo">247</span> * The following attributes are set on the {@link HttpServletRequest} object that can be useful for logging purposes:<a name="line.247"></a>
+<span class="sourceLineNo">248</span> * <ul><a name="line.248"></a>
+<span class="sourceLineNo">249</span> * <li><js>"Exception"</js> - Any exceptions thrown during the request.<a name="line.249"></a>
+<span class="sourceLineNo">250</span> * <li><js>"ExecTime"</js> - Execution time of the request.<a name="line.250"></a>
+<span class="sourceLineNo">251</span> * </ul><a name="line.251"></a>
+<span class="sourceLineNo">252</span> *<a name="line.252"></a>
+<span class="sourceLineNo">253</span> * <h6 class='figure'>Example:</h6><a name="line.253"></a>
+<span class="sourceLineNo">254</span> * <p class='bcode'><a name="line.254"></a>
+<span class="sourceLineNo">255</span> * <ja>@RestResource</ja>(...)<a name="line.255"></a>
+<span class="sourceLineNo">256</span> * <jk>public class</jk> MyResource <jk>extends</jk> RestServletDefault {<a name="line.256"></a>
+<span class="sourceLineNo">257</span> *<a name="line.257"></a>
+<span class="sourceLineNo">258</span> * <jc>// Log the time it took to execute the request.</jc><a name="line.258"></a>
+<span class="sourceLineNo">259</span> * <ja>@RestHook</ja>(<jsf>END_CALL</jsf>)<a name="line.259"></a>
+<span class="sourceLineNo">260</span> * <jk>public void</jk> onEndCall(RestRequest req, Logger logger) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span> * Exception e = (Exception)req.getAttribute(<js>"Exception"</js>);<a name="line.261"></a>
+<span class="sourceLineNo">262</span> * Long execTime = (Long)req.getAttribute(<js>"ExecTime"</js>);<a name="line.262"></a>
+<span class="sourceLineNo">263</span> * <jk>if</jk> (e != <jk>null</jk>)<a name="line.263"></a>
+<span class="sourceLineNo">264</span> * logger.warn(e, <js>"Request failed in {0}ms."</js>, execTime);<a name="line.264"></a>
+<span class="sourceLineNo">265</span> * <jk>else</jk><a name="line.265"></a>
+<span class="sourceLineNo">266</span> * logger.fine(<js>"Request finished in {0}ms."</js>, execTime);<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> * </p><a name="line.269"></a>
+<span class="sourceLineNo">270</span> *<a name="line.270"></a>
+<span class="sourceLineNo">271</span> * <h5 class='section'>Notes:</h5><a name="line.271"></a>
+<span class="sourceLineNo">272</span> * <ul class='spaced-list'><a name="line.272"></a>
+<span class="sourceLineNo">273</span> * <li>If the method returns any value, it is ignored.<a name="line.273"></a>
+<span class="sourceLineNo">274</span> * <li>Multiple END_CALL methods can be defined on a class.<a name="line.274"></a>
+<span class="sourceLineNo">275</span> * <br>END_CALL methods on parent classes are invoked before END_CALL methods on child classes.<a name="line.275"></a>
+<span class="sourceLineNo">276</span> * <br>The order of END_CALL method invocations within a class is alphabetical, then by parameter count, then by parameter types.<a name="line.276"></a>
+<span class="sourceLineNo">277</span> * <li>The method can throw any exception, although at this point it is too late to set an HTTP error status code.<a name="line.277"></a>
+<span class="sourceLineNo">278</span> * <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.<a name="line.278"></a>
+<span class="sourceLineNo">279</span> * <br>The method is still considered part of the parent class for ordering purposes even though it's<a name="line.279"></a>
+<span class="sourceLineNo">280</span> * overridden by the child class.<a name="line.280"></a>
+<span class="sourceLineNo">281</span> * </ul><a name="line.281"></a>
+<span class="sourceLineNo">282</span> */<a name="line.282"></a>
+<span class="sourceLineNo">283</span> END_CALL,<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span> /**<a name="line.285"></a>
+<span class="sourceLineNo">286</span> * Identifies a method that gets called during servlet initialization.<a name="line.286"></a>
+<span class="sourceLineNo">287</span> *<a name="line.287"></a>
+<span class="sourceLineNo">288</span> * <p><a name="line.288"></a>
+<span class="sourceLineNo">289</span> * This method is called from within the {@link Servlet#init(ServletConfig)} method after the {@link RestConfig}<a name="line.289"></a>
+<span class="sourceLineNo">290</span> * object has been created and initialized with the annotations defined on the class, but before the<a name="line.290"></a>
+<span class="sourceLineNo">291</span> * {@link RestContext} object has been created.<a name="line.291"></a>
+<span class="sourceLineNo">292</span> *<a name="line.292"></a>
+<span class="sourceLineNo">293</span> * <p><a name="line.293"></a>
+<span class="sourceLineNo">294</span> * The only valid parameter type for this method is {@link RestConfig} which can be used to configure the servlet.<a name="line.294"></a>
+<span class="sourceLineNo">295</span> *<a name="line.295"></a>
+<span class="sourceLineNo">296</span> * <p><a name="line.296"></a>
+<span class="sourceLineNo">297</span> * An example of this is the <code>PetStoreResource</code> class that uses an init method to perform initialization<a name="line.297"></a>
+<span class="sourceLineNo">298</span> * of an internal data structure.<a name="line.298"></a>
+<span class="sourceLineNo">299</span> *<a name="line.299"></a>
+<span class="sourceLineNo">300</span> * <h6 class='figure'>Example:</h6><a name="line.300"></a>
+<span class="sourceLineNo">301</span> * <p class='bcode'><a name="line.301"></a>
+<span class="sourceLineNo">302</span> * <ja>@RestResource</ja>(...)<a name="line.302"></a>
+<span class="sourceLineNo">303</span> * <jk>public class</jk> PetStoreResource <jk>extends</jk> ResourceJena {<a name="line.303"></a>
+<span class="sourceLineNo">304</span> *<a name="line.304"></a>
+<span class="sourceLineNo">305</span> * <jc>// Our database.</jc><a name="line.305"></a>
+<span class="sourceLineNo">306</span> * <jk>private</jk> Map<Integer,Pet> <jf>petDB</jf>;<a name="line.306"></a>
+<span class="sourceLineNo">307</span> *<a name="line.307"></a>
+<span class="sourceLineNo">308</span> * <ja>@RestHook</ja>(<jsf>INIT</jsf>)<a name="line.308"></a>
+<span class="sourceLineNo">309</span> * <jk>public void</jk> onInit(RestConfig config) <jk>throws</jk> Exception {<a name="line.309"></a>
+<span class="sourceLineNo">310</span> * <jc>// Load our database from a local JSON file.</jc><a name="line.310"></a>
+<span class="sourceLineNo">311</span> * <jf>petDB</jf> = JsonParser.<jsf>DEFAULT</jsf>.parse(getClass().getResourceAsStream(<js>"PetStore.json"</js>), LinkedHashMap.<jk>class</jk>, Integer.<jk>class</jk>, Pet.<jk>class</jk>);<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> * </p><a name="line.314"></a>
+<span class="sourceLineNo">315</span> *<a name="line.315"></a>
+<span class="sourceLineNo">316</span> * <h5 class='section'>Notes:</h5><a name="line.316"></a>
+<span class="sourceLineNo">317</span> * <ul class='spaced-list'><a name="line.317"></a>
+<span class="sourceLineNo">318</span> * <li>If the method returns any value, it is ignored.<a name="line.318"></a>
+<span class="sourceLineNo">319</span> * <li>Multiple INIT methods can be defined on a class.<a name="line.319"></a>
+<span class="sourceLineNo">320</span> * <br>INIT methods on parent classes are invoked before INIT methods on child classes.<a name="line.320"></a>
+<span class="sourceLineNo">321</span> * <br>The order of INIT method invocations within a class is alphabetical, then by parameter count, then by parameter types.<a name="line.321"></a>
+<span class="sourceLineNo">322</span> * <li>The method can throw any exception causing initialization of the servlet to fail.<a name="line.322"></a>
+<span class="sourceLineNo">323</span> * <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.<a name="line.323"></a>
+<span class="sourceLineNo">324</span> * <br>The method is still considered part of the parent class for ordering purposes even though it's<a name="line.324"></a>
+<span class="sourceLineNo">325</span> * overridden by the child class.<a name="line.325"></a>
+<span class="sourceLineNo">326</span> * </ul><a name="line.326"></a>
+<span class="sourceLineNo">327</span> */<a name="line.327"></a>
+<span class="sourceLineNo">328</span> INIT,<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span> /**<a name="line.330"></a>
+<span class="sourceLineNo">331</span> * Identifies a method that gets called immediately after servlet initialization.<a name="line.331"></a>
+<span class="sourceLineNo">332</span> *<a name="line.332"></a>
+<span class="sourceLineNo">333</span> * <p><a name="line.333"></a>
+<span class="sourceLineNo">334</span> * This method is called from within the {@link Servlet#init(ServletConfig)} method after the {@link RestContext}<a name="line.334"></a>
+<span class="sourceLineNo">335</span> * object has been created.<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> * The only valid parameter type for this method is {@link RestContext} which can be used to retrieve information<a name="line.338"></a>
+<span class="sourceLineNo">339</span> * about the servlet.<a name="line.339"></a>
+<span class="sourceLineNo">340</span> *<a name="line.340"></a>
+<span class="sourceLineNo">341</span> * <h5 class='section'>Notes:</h5><a name="line.341"></a>
+<span class="sourceLineNo">342</span> * <ul class='spaced-list'><a name="line.342"></a>
+<span class="sourceLineNo">343</span> * <li>If the method returns any value, it is ignored.<a name="line.343"></a>
+<span class="sourceLineNo">344</span> * <li>Multiple POST_INIT methods can be defined on a class.<a name="line.344"></a>
+<span class="sourceLineNo">345</span> * <br>POST_INIT methods on parent classes are invoked before POST_INIT methods on child classes.<a name="line.345"></a>
+<span class="sourceLineNo">346</span> * <br>The order of POST_INIT method invocations within a class is alphabetical, then by parameter count, then by parameter types.<a name="line.346"></a>
+<span class="sourceLineNo">347</span> * <li>The method can throw any exception causing initialization of the servlet to fail.<a name="line.347"></a>
+<span class="sourceLineNo">348</span> * <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.<a name="line.348"></a>
+<span class="sourceLineNo">349</span> * <br>The method is still considered part of the parent class for ordering purposes even though it's<a name="line.349"></a>
+<span class="sourceLineNo">350</span> * overridden by the child class.<a name="line.350"></a>
+<span class="sourceLineNo">351</span> * </ul><a name="line.351"></a>
+<span class="sourceLineNo">352</span> */<a name="line.352"></a>
+<span class="sourceLineNo">353</span> POST_INIT,<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span> /**<a name="line.355"></a>
+<span class="sourceLineNo">356</span> * Identical to {@link #POST_INIT} except the order of execution is child-resources first.<a name="line.356"></a>
+<span class="sourceLineNo">357</span> *<a name="line.357"></a>
+<span class="sourceLineNo">358</span> * <p><a name="line.358"></a>
+<span class="sourceLineNo">359</span> * Use this annotation if you need to perform any kind of initialization on child resources before the parent resource.<a name="line.359"></a>
+<span class="sourceLineNo">360</span> *<a name="line.360"></a>
+<span class="sourceLineNo">361</span> * <p><a name="line.361"></a>
+<span class="sourceLineNo">362</span> * This method is called from within the {@link Servlet#init(ServletConfig)} method after the {@link RestContext}<a name="line.362"></a>
+<span class="sourceLineNo">363</span> * object has been created and after the {@link #POST_INIT} methods have been called.<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> * The only valid parameter type for this method is {@link RestContext} which can be used to retrieve information<a name="line.366"></a>
+<span class="sourceLineNo">367</span> * about the servlet.<a name="line.367"></a>
+<span class="sourceLineNo">368</span> *<a name="line.368"></a>
+<span class="sourceLineNo">369</span> * <h5 class='section'>Notes:</h5><a name="line.369"></a>
+<span class="sourceLineNo">370</span> * <ul class='spaced-list'><a name="line.370"></a>
+<span class="sourceLineNo">371</span> * <li>If the method returns any value, it is ignored.<a name="line.371"></a>
+<span class="sourceLineNo">372</span> * <li>Multiple POST_INIT_CHILD_FIRST methods can be defined on a class.<a name="line.372"></a>
+<span class="sourceLineNo">373</span> * <br>POST_INIT_CHILD_FIRST methods on parent classes are invoked before POST_INIT_CHILD_FIRST methods on child classes.<a name="line.373"></a>
+<span class="sourceLineNo">374</span> * <br>The order of POST_INIT_CHILD_FIRST method invocations within a class is alphabetical, then by parameter count, then by parameter types.<a name="line.374"></a>
+<span class="sourceLineNo">375</span> * <li>The method can throw any exception causing initialization of the servlet to fail.<a name="line.375"></a>
+<span class="sourceLineNo">376</span> * </ul><a name="line.376"></a>
+<span class="sourceLineNo">377</span> */<a name="line.377"></a>
+<span class="sourceLineNo">378</span> POST_INIT_CHILD_FIRST,<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> * Identifies a method that gets called during servlet destroy.<a name="line.381"></a>
+<span class="sourceLineNo">382</span> *<a name="line.382"></a>
+<span class="sourceLineNo">383</span> * <p><a name="line.383"></a>
+<span class="sourceLineNo">384</span> * This method is called from within the {@link Servlet#destroy()}.<a name="line.384"></a>
+<span class="sourceLineNo">385</span> *<a name="line.385"></a>
+<span class="sourceLineNo">386</span> * <p><a name="line.386"></a>
+<span class="sourceLineNo">387</span> * The only valid parameter type for this method is {@link RestContext}, although typically no arguments will<a name="line.387"></a>
+<span class="sourceLineNo">388</span> * be specified.<a name="line.388"></a>
+<span class="sourceLineNo">389</span> *<a name="line.389"></a>
+<span class="sourceLineNo">390</span> * <h6 class='figure'>Example:</h6><a name="line.390"></a>
+<span class="sourceLineNo">391</span> * <p class='bcode'><a name="line.391"></a>
+<span class="sourceLineNo">392</span> * <ja>@RestResource</ja>(...)<a name="line.392"></a>
+<span class="sourceLineNo">393</span> * <jk>public class</jk> PetStoreResource <jk>extends</jk> ResourceJena {<a name="line.393"></a>
+<span class="sourceLineNo">394</span> *<a name="line.394"></a>
+<span class="sourceLineNo">395</span> * <jc>// Our database.</jc><a name="line.395"></a>
+<span class="sourceLineNo">396</span> * <jk>private</jk> Map<Integer,Pet> <jf>petDB</jf>;<a name="line.396"></a>
+<span class="sourceLineNo">397</span> *<a name="line.397"></a>
+<span class="sourceLineNo">398</span> * <ja>@RestHook</ja>(<jsf>DESTROY</jsf>)<a name="line.398"></a>
+<span class="sourceLineNo">399</span> * <jk>public void</jk> onDestroy() {<a name="line.399"></a>
+<span class="sourceLineNo">400</span> * <jf>petDB</jf> = <jk>null</jk>;<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> * </p><a name="line.403"></a>
+<span class="sourceLineNo">404</span> *<a name="line.404"></a>
+<span class="sourceLineNo">405</span> * <h5 class='section'>Notes:</h5><a name="line.405"></a>
+<span class="sourceLineNo">406</span> * <ul class='spaced-list'><a name="line.406"></a>
+<span class="sourceLineNo">407</span> * <li>If the method returns any value, it is ignored.<a name="line.407"></a>
+<span class="sourceLineNo">408</span> * <li>Multiple DESTROY methods can be defined on a class.<a name="line.408"></a>
+<span class="sourceLineNo">409</span> * <br>DESTROY methods on child classes are invoked before DESTROY methods on parent classes.<a name="line.409"></a>
+<span class="sourceLineNo">410</span> * <br>The order of DESTROY method invocations within a class is alphabetical, then by parameter count, then by parameter types.<a name="line.410"></a>
+<span class="sourceLineNo">411</span> * <li>In general, destroy methods should not throw any exceptions, although if any are thrown, the stack trace will be<a name="line.411"></a>
+<span class="sourceLineNo">412</span> * printed to <code>System.err</code>.<a name="line.412"></a>
+<span class="sourceLineNo">413</span> * <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.<a name="line.413"></a>
+<span class="sourceLineNo">414</span> * <br>The method is still considered part of the parent class for ordering purposes even though it's<a name="line.414"></a>
+<span class="sourceLineNo">415</span> * overridden by the child class.<a name="line.415"></a>
+<span class="sourceLineNo">416</span> * </ul><a name="line.416"></a>
+<span class="sourceLineNo">417</span> */<a name="line.417"></a>
+<span class="sourceLineNo">418</span> DESTROY<a name="line.418"></a>
+<span class="sourceLineNo">419</span>}<a name="line.419"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestHook.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestHook.html b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestHook.html
new file mode 100644
index 0000000..5d8409d
--- /dev/null
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/annotation/RestHook.html
@@ -0,0 +1,158 @@
+<!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.rest.annotation;<a name="line.13"></a>
+<span class="sourceLineNo">014</span><a name="line.14"></a>
+<span class="sourceLineNo">015</span>import static java.lang.annotation.ElementType.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span>import static java.lang.annotation.RetentionPolicy.*;<a name="line.16"></a>
+<span class="sourceLineNo">017</span><a name="line.17"></a>
+<span class="sourceLineNo">018</span>import java.lang.annotation.*;<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> * Identifies Java methods on a resource/servlet class that get invoked during particular lifecycle events of<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * the servlet or REST call.<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> * For example, if you want to add an initialization method to your resource:<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * <p class='bcode'><a name="line.26"></a>
+<span class="sourceLineNo">027</span> * <ja>@RestResource</ja>(...)<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * <jk>public class</jk> MyResource {<a name="line.28"></a>
+<span class="sourceLineNo">029</span> *<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * <jc>// Our database.</jc><a name="line.30"></a>
+<span class="sourceLineNo">031</span> * <jk>private</jk> Map&lt;Integer,Object&gt; <jf>myDatabase</jf>;<a name="line.31"></a>
+<span class="sourceLineNo">032</span> *<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * <ja>@RestHook</ja>(<jsf>INIT</jsf>)<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * <jk>public void</jk> initMyDatabase(RestConfig config) <jk>throws</jk> Exception {<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * <jf>myDatabase</jf> = <jk>new</jk> LinkedHashMap&lt;&gt;();<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> * </p><a name="line.38"></a>
+<span class="sourceLineNo">039</span> *<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * <p><a name="line.40"></a>
+<span class="sourceLineNo">041</span> * Or if you want to intercept REST calls:<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * <p class='bcode'><a name="line.42"></a>
+<span class="sourceLineNo">043</span> * <ja>@RestResource</ja>(...)<a name="line.43"></a>
+<span class="sourceLineNo">044</span> * <jk>public class</jk> MyResource {<a name="line.44"></a>
+<span class="sourceLineNo">045</span> *<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * <jc>// Add a request attribute to all incoming requests.</jc><a name="line.46"></a>
+<span class="sourceLineNo">047</span> * <ja>@RestHook</ja>(<jsf>PRE_CALL</jsf>)<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * <jk>public void</jk> onPreCall(RestRequest req) {<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * req.setAttribute(<js>"foo"</js>, <js>"bar"</js>);<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> * </p><a name="line.52"></a>
+<span class="sourceLineNo">053</span> *<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * <p><a name="line.54"></a>
+<span class="sourceLineNo">055</span> * The hook events can be broken down into two categories:<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>Resource lifecycle events:<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * <ul><a name="line.58"></a>
+<span class="sourceLineNo">059</span> * <li>{@link HookEvent#INIT INIT} - Right before initialization.<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * <li>{@link HookEvent#POST_INIT POST_INIT} - Right after initialization.<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * <li>{@link HookEvent#POST_INIT_CHILD_FIRST POST_INIT_CHILD_FIRST} - Right after initialization, but run child methods first.<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * <li>{@link HookEvent#DESTROY DESTROY} - Right before servlet destroy.<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * </ul><a name="line.63"></a>
+<span class="sourceLineNo">064</span> * <li>REST call lifecycle events:<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * <ul><a name="line.65"></a>
+<span class="sourceLineNo">066</span> * <li>{@link HookEvent#START_CALL START_CALL} - At the beginning of a REST call.<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * <li>{@link HookEvent#PRE_CALL PRE_CALL} - Right before the <ja>@RestMethod</ja> method is invoked.<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * <li>{@link HookEvent#POST_CALL POST_CALL} - Right after the <ja>@RestMethod</ja> method is invoked.<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * <li>{@link HookEvent#END_CALL END_CALL} - At the end of the REST call after the response has been flushed.<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * </ul><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> * <p><a name="line.73"></a>
+<span class="sourceLineNo">074</span> * See the {@link HookEvent} class for information about individual event types.<a name="line.74"></a>
+<span class="sourceLineNo">075</span> */<a name="line.75"></a>
+<span class="sourceLineNo">076</span>@Documented<a name="line.76"></a>
+<span class="sourceLineNo">077</span>@Target(METHOD)<a name="line.77"></a>
+<span class="sourceLineNo">078</span>@Retention(RUNTIME)<a name="line.78"></a>
+<span class="sourceLineNo">079</span>@Inherited<a name="line.79"></a>
+<span class="sourceLineNo">080</span>public @interface RestHook {<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> * The lifecycle event.<a name="line.83"></a>
+<span class="sourceLineNo">084</span> */<a name="line.84"></a>
+<span class="sourceLineNo">085</span> HookEvent value();<a name="line.85"></a>
+<span class="sourceLineNo">086</span>}<a name="line.86"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/rest/jena/RestServletJenaDefault.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/jena/RestServletJenaDefault.html b/content/site/apidocs/src-html/org/apache/juneau/rest/jena/RestServletJenaDefault.html
index 0da3e55..4a00f88 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/jena/RestServletJenaDefault.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/jena/RestServletJenaDefault.html
@@ -258,7 +258,7 @@
<span class="sourceLineNo">250</span> "<h2>$R{methodSummary,$R{servletDescription}}</h2>",<a name="line.250"></a>
<span class="sourceLineNo">251</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.251"></a>
<span class="sourceLineNo">252</span> },<a name="line.252"></a>
-<span class="sourceLineNo">253</span> stylesheet="servlet:/styles/devops.css"<a name="line.253"></a>
+<span class="sourceLineNo">253</span> stylesheet="servlet:/styles/light.css"<a name="line.253"></a>
<span class="sourceLineNo">254</span> ),<a name="line.254"></a>
<span class="sourceLineNo">255</span> favicon="htdocs/juneau.png",<a name="line.255"></a>
<span class="sourceLineNo">256</span> staticFiles="{htdocs:'htdocs',styles:'styles'}"<a name="line.256"></a>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/rest/widget/StyleMenuItem.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/widget/StyleMenuItem.html b/content/site/apidocs/src-html/org/apache/juneau/rest/widget/StyleMenuItem.html
index 7d1ebb0..1c7ca2e 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/widget/StyleMenuItem.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/widget/StyleMenuItem.html
@@ -58,7 +58,7 @@
<span class="sourceLineNo">050</span> */<a name="line.50"></a>
<span class="sourceLineNo">051</span>public class StyleMenuItem extends MenuItemWidget {<a name="line.51"></a>
<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span> private static final String[] BUILT_IN_STYLES = {"devops", "light", "original"};<a name="line.53"></a>
+<span class="sourceLineNo">053</span> private static final String[] BUILT_IN_STYLES = {"devops", "light", "original", "dark"};<a name="line.53"></a>
<span class="sourceLineNo">054</span><a name="line.54"></a>
<span class="sourceLineNo">055</span> @Override /* MenuItemWidget */<a name="line.55"></a>
<span class="sourceLineNo">056</span> public String getLabel(RestRequest req) {<a name="line.56"></a>
[22/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 3ee323c..307845d 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/LogsResource.html
@@ -143,7 +143,7 @@ var activeTableTab = "activeTableTab";
<a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html#properties--">properties</a>=<a href="../../../../../org/apache/juneau/rest/annotation/Property.html" title="annotation in org.apache.juneau.rest.annotation">@Property</a>(<a href="../../../../../org/apache/juneau/rest/annotation/Property.html#name--">name</a>="HtmlSerializer.uriAnchorText",<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#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.53">LogsResource</a>
+public class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.54">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>
@@ -231,7 +231,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
<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/resources/LogsResource.html#init-org.apache.juneau.rest.RestConfig-">init</a></span>(<a href="../../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> config)</code>
-<div class="block">Resource initialization method.</div>
+<div class="block">Initializes the log directory and formatter.</div>
</td>
</tr>
<tr id="i4" class="altColor">
@@ -263,6 +263,13 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
</tr>
</table>
<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.juneau.microservice.Resource">
+<!-- -->
+</a>
+<h3>Methods inherited from class 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>
@@ -274,7 +281,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
<!-- -->
</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#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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">
@@ -317,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.53">LogsResource</a>()</pre>
+<pre>public <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.54">LogsResource</a>()</pre>
</li>
</ul>
</li>
@@ -334,32 +341,15 @@ 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/LogsResource.html#line.67">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"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../../org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-">RestServlet</a></code></span></div>
-<div class="block">Resource initialization method.
-
- <p>
- Identical to <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true#init-javax.servlet.ServletConfig-" title="class or interface in javax.servlet"><code>Servlet.init(ServletConfig)</code></a> except the config object provides access to the external config
- file, configuration properties, and variable resolver defined for this resource.
-
- <p>
- Classes can also use <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#init--" title="class or interface in javax.servlet"><code>GenericServlet.init()</code></a> and <a href="../../../../../org/apache/juneau/rest/RestServlet.html#getServletConfig--"><code>RestServlet.getServletConfig()</code></a> as well to perform
- initialization.
-
- <p>
- Note that if you override this method, you must first call <code><jk>super</jk>.init(servletConfig)</code>!
-
- <p>
- Resource classes that don't extend from <a href="../../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> can add this method to their class to get access to
- the config object.</div>
+<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)
+ 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>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../../org/apache/juneau/microservice/Resource.html#init-org.apache.juneau.rest.RestConfig-">init</a></code> in class <code><a href="../../../../../org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>config</code> - The servlet configuration.</dd>
+<dd><code>config</code> - The resource config.</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> - Any exception can be thrown to signal an initialization failure.</dd>
+<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>
@@ -372,7 +362,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
<pre><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">@RestMethod</a>(<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#name--">name</a>="GET",
<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#path--">path</a>="/*",
<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html#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.96">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.102">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,
@@ -402,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.138">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.144">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,
@@ -449,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.217">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.223">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")
@@ -489,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.243">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.249">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>
@@ -514,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.269">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.275">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/84931d4d/content/site/apidocs/org/apache/juneau/microservice/resources/SampleRootResource.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/SampleRootResource.html b/content/site/apidocs/org/apache/juneau/microservice/resources/SampleRootResource.html
index 3a1ae3a..57a7385 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/SampleRootResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/SampleRootResource.html
@@ -181,7 +181,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/ResourceGroup.htm
<!-- -->
</a>
<h3>Methods inherited from class org.apache.juneau.microservice.<a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a></h3>
-<code><a href="../../../../../org/apache/juneau/microservice/ResourceGroup.html#init-org.apache.juneau.rest.RestConfig-">init</a></code></li>
+<code><a href="../../../../../org/apache/juneau/microservice/ResourceGroup.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.RestServletGroupDefault">
@@ -202,7 +202,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/ResourceGroup.htm
<!-- -->
</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#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/microservice/resources/ShutdownResource.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/resources/ShutdownResource.html b/content/site/apidocs/org/apache/juneau/microservice/resources/ShutdownResource.html
index 8e53e6d..bb6446c 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/ShutdownResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/ShutdownResource.html
@@ -193,7 +193,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
<!-- -->
</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#init-org.apache.juneau.rest.RestConfig-">init</a></code></li>
+<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">
@@ -207,7 +207,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
<!-- -->
</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#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 8758b4c..1e2da2b 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
@@ -88,7 +88,7 @@
</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> (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>)
+<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>
<ul>
<li type="circle">org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServlet</span></a>
<ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 f97f8ba..98b5fa0 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestCallHandler.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestCallHandler.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};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -206,35 +206,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestCallHandler.html#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</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">Callback method that gets invoked right after the REST Java method is invoked, but before the serializer is
- invoked.</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/rest/RestCallHandler.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a></span>(<a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req)</code>
-<div class="block">Callback method that gets invoked right before the REST Java method is invoked.</div>
-</td>
-</tr>
-<tr id="i8" class="altColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestCallHandler.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</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,
- long time)</code>
-<div class="block">Callback method for listening for successful completion of requests.</div>
-</td>
-</tr>
-<tr id="i9" class="rowColor">
-<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestCallHandler.html#renderError-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-org.apache.juneau.rest.RestException-">renderError</a></span>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> req,
<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletResponse</a> res,
<a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a> e)</code>
<div class="block">Method for rendering response errors.</div>
</td>
</tr>
-<tr id="i10" class="altColor">
+<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/rest/RestCallHandler.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></span>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> r1,
<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletResponse</a> r2)</code>
@@ -269,7 +247,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockListLast">
<li class="blockList">
<h4>RestCallHandler</h4>
-<pre>public <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.55">RestCallHandler</a>(<a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a> context)</pre>
+<pre>public <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.54">RestCallHandler</a>(<a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a> context)</pre>
<div class="block">Constructor.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -291,7 +269,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>createRequest</h4>
-<pre>protected <a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.72">createRequest</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> req)
+<pre>protected <a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.70">createRequest</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> req)
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">Creates a <a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest"><code>RestRequest</code></a> object based on the specified incoming <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http"><code>HttpServletRequest</code></a> object.
@@ -313,7 +291,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>createResponse</h4>
-<pre>protected <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.88">createResponse</a>(<a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req,
+<pre>protected <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.86">createResponse</a>(<a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req,
<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletResponse</a> res)
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">Creates a <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest"><code>RestResponse</code></a> object based on the specified incoming <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http"><code>HttpServletResponse</code></a> object
@@ -338,7 +316,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>service</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.103">service</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> r1,
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.101">service</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> r1,
<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletResponse</a> r2)
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>,
<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>
@@ -362,7 +340,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>handleResponse</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.213">handleResponse</a>(<a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req,
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.219">handleResponse</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="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> output)
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>,
@@ -395,7 +373,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>handleNotFound</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.233">handleNotFound</a>(int rc,
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.239">handleNotFound</a>(int rc,
<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>
@@ -420,7 +398,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>handleError</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.262">handleError</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> req,
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.268">handleError</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> req,
<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletResponse</a> res,
<a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a> e)
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>
@@ -448,7 +426,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>renderError</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.283">renderError</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> req,
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.289">renderError</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> req,
<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletResponse</a> res,
<a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a> e)
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>
@@ -470,82 +448,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
</dl>
</li>
</ul>
-<a name="onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>onSuccess</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.326">onSuccess</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,
- long time)</pre>
-<div class="block">Callback method for listening for successful completion of requests.
-
- <p>
- Subclasses can override this method for gathering performance statistics.
-
- <p>
- The default implementation does nothing.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>req</code> - The HTTP request.</dd>
-<dd><code>res</code> - The HTTP response.</dd>
-<dd><code>time</code> - The time in milliseconds it took to process the request.</dd>
-</dl>
-</li>
-</ul>
-<a name="onPreCall-org.apache.juneau.rest.RestRequest-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>onPreCall</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.341">onPreCall</a>(<a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req)
- throws <a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a></pre>
-<div class="block">Callback method that gets invoked right before the REST Java method is invoked.
-
- <p>
- Subclasses can override this method to override request headers or set request-duration properties before the
- Java method is invoked.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>req</code> - The HTTP servlet request object.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a></code> - If any error occurs.</dd>
-</dl>
-</li>
-</ul>
-<a name="onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>onPostCall</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestCallHandler.html#line.358">onPostCall</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="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a></pre>
-<div class="block">Callback method that gets invoked right after the REST Java method is invoked, but before the serializer is
- invoked.
-
- <p>
- Subclasses can override this method to override request and response headers, or set/override properties used by
- the serializer.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>req</code> - The HTTP servlet request object.</dd>
-<dd><code>res</code> - The HTTP servlet response object.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a></code> - If any error occurs.</dd>
-</dl>
-</li>
-</ul>
<a name="getSessionObjects-org.apache.juneau.rest.RestRequest-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getSessionObjects</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/RestCallHandler.html#line.372">getSessionObjects</a>(<a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req)</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/RestCallHandler.html#line.328">getSessionObjects</a>(<a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req)</pre>
<div class="block">Returns the session objects for the specified request.
<p>
[15/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/html/HtmlSerializerSession.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/html/HtmlSerializerSession.html b/content/site/apidocs/src-html/org/apache/juneau/html/HtmlSerializerSession.html
index ed8c7ee..c5ae2f6 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/html/HtmlSerializerSession.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/html/HtmlSerializerSession.html
@@ -446,340 +446,361 @@
<span class="sourceLineNo">438</span> out.ie(i).eTag("table").nl(i);<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> private void serializeBeanMap(HtmlWriter out, BeanMap<?> m, ClassMeta<?> eType,<a name="line.441"></a>
-<span class="sourceLineNo">442</span> BeanPropertyMeta ppMeta) throws Exception {<a name="line.442"></a>
-<span class="sourceLineNo">443</span> int i = indent;<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span> out.oTag(i, "table");<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span> String typeName = m.getMeta().getDictionaryName();<a name="line.447"></a>
-<span class="sourceLineNo">448</span> if (typeName != null && eType != m.getClassMeta())<a name="line.448"></a>
-<span class="sourceLineNo">449</span> out.attr(getBeanTypePropertyName(m.getClassMeta()), typeName);<a name="line.449"></a>
-<span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span> out.append('>').nl(i);<a name="line.451"></a>
-<span class="sourceLineNo">452</span> if (isAddKeyValueTableHeaders() && ! (m.getClassMeta().getExtendedMeta(HtmlClassMeta.class).isNoTableHeaders()<a name="line.452"></a>
-<span class="sourceLineNo">453</span> || (ppMeta != null && ppMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).isNoTableHeaders()))) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span> out.sTag(i+1, "tr").nl(i+1);<a name="line.454"></a>
-<span class="sourceLineNo">455</span> out.sTag(i+2, "th").append("key").eTag("th").nl(i+2);<a name="line.455"></a>
-<span class="sourceLineNo">456</span> out.sTag(i+2, "th").append("value").eTag("th").nl(i+2);<a name="line.456"></a>
-<span class="sourceLineNo">457</span> out.ie(i+1).eTag("tr").nl(i+1);<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> for (BeanPropertyValue p : m.getValues(isTrimNulls())) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span> BeanPropertyMeta pMeta = p.getMeta();<a name="line.461"></a>
-<span class="sourceLineNo">462</span> ClassMeta<?> cMeta = p.getClassMeta();<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span> String key = p.getName();<a name="line.464"></a>
-<span class="sourceLineNo">465</span> Object value = p.getValue();<a name="line.465"></a>
-<span class="sourceLineNo">466</span> Throwable t = p.getThrown();<a name="line.466"></a>
-<span class="sourceLineNo">467</span> if (t != null)<a name="line.467"></a>
-<span class="sourceLineNo">468</span> onBeanGetterException(pMeta, t);<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span> if (canIgnoreValue(cMeta, key, value))<a name="line.470"></a>
-<span class="sourceLineNo">471</span> continue;<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span> String link = cMeta.isCollectionOrArray() ? null : getLink(pMeta);<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span> out.sTag(i+1, "tr").nl(i+1);<a name="line.475"></a>
-<span class="sourceLineNo">476</span> out.sTag(i+2, "td").text(key).eTag("td").nl(i+2);<a name="line.476"></a>
-<span class="sourceLineNo">477</span> out.oTag(i+2, "td");<a name="line.477"></a>
-<span class="sourceLineNo">478</span> String style = getStyle(this, pMeta, value);<a name="line.478"></a>
-<span class="sourceLineNo">479</span> if (style != null)<a name="line.479"></a>
-<span class="sourceLineNo">480</span> out.attr("style", style);<a name="line.480"></a>
-<span class="sourceLineNo">481</span> out.cTag();<a name="line.481"></a>
+<span class="sourceLineNo">441</span> @SuppressWarnings("hiding")<a name="line.441"></a>
+<span class="sourceLineNo">442</span> private void serializeBeanMap(HtmlWriter out, BeanMap<?> m, ClassMeta<?> eType,<a name="line.442"></a>
+<span class="sourceLineNo">443</span> BeanPropertyMeta ppMeta) throws Exception {<a name="line.443"></a>
+<span class="sourceLineNo">444</span> int i = indent;<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span> out.oTag(i, "table");<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span> String typeName = m.getMeta().getDictionaryName();<a name="line.448"></a>
+<span class="sourceLineNo">449</span> if (typeName != null && eType != m.getClassMeta())<a name="line.449"></a>
+<span class="sourceLineNo">450</span> out.attr(getBeanTypePropertyName(m.getClassMeta()), typeName);<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span> out.append('>').nl(i);<a name="line.452"></a>
+<span class="sourceLineNo">453</span> if (isAddKeyValueTableHeaders() && ! (m.getClassMeta().getExtendedMeta(HtmlClassMeta.class).isNoTableHeaders()<a name="line.453"></a>
+<span class="sourceLineNo">454</span> || (ppMeta != null && ppMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).isNoTableHeaders()))) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span> out.sTag(i+1, "tr").nl(i+1);<a name="line.455"></a>
+<span class="sourceLineNo">456</span> out.sTag(i+2, "th").append("key").eTag("th").nl(i+2);<a name="line.456"></a>
+<span class="sourceLineNo">457</span> out.sTag(i+2, "th").append("value").eTag("th").nl(i+2);<a name="line.457"></a>
+<span class="sourceLineNo">458</span> out.ie(i+1).eTag("tr").nl(i+1);<a name="line.458"></a>
+<span class="sourceLineNo">459</span> }<a name="line.459"></a>
+<span class="sourceLineNo">460</span><a name="line.460"></a>
+<span class="sourceLineNo">461</span> for (BeanPropertyValue p : m.getValues(isTrimNulls())) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span> BeanPropertyMeta pMeta = p.getMeta();<a name="line.462"></a>
+<span class="sourceLineNo">463</span> ClassMeta<?> cMeta = p.getClassMeta();<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span> String key = p.getName();<a name="line.465"></a>
+<span class="sourceLineNo">466</span> Object value = p.getValue();<a name="line.466"></a>
+<span class="sourceLineNo">467</span> Throwable t = p.getThrown();<a name="line.467"></a>
+<span class="sourceLineNo">468</span> if (t != null)<a name="line.468"></a>
+<span class="sourceLineNo">469</span> onBeanGetterException(pMeta, t);<a name="line.469"></a>
+<span class="sourceLineNo">470</span><a name="line.470"></a>
+<span class="sourceLineNo">471</span> if (canIgnoreValue(cMeta, key, value))<a name="line.471"></a>
+<span class="sourceLineNo">472</span> continue;<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span> String link = null, anchorText = null;<a name="line.474"></a>
+<span class="sourceLineNo">475</span> if (! cMeta.isCollectionOrArray()) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span> link = m.resolveVars(getLink(pMeta));<a name="line.476"></a>
+<span class="sourceLineNo">477</span> anchorText = m.resolveVars(getAnchorText(pMeta));<a name="line.477"></a>
+<span class="sourceLineNo">478</span> }<a name="line.478"></a>
+<span class="sourceLineNo">479</span><a name="line.479"></a>
+<span class="sourceLineNo">480</span> if (anchorText != null)<a name="line.480"></a>
+<span class="sourceLineNo">481</span> value = anchorText;<a name="line.481"></a>
<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span> try {<a name="line.483"></a>
-<span class="sourceLineNo">484</span> if (link != null)<a name="line.484"></a>
-<span class="sourceLineNo">485</span> out.oTag(i+3, "a").attrUri("href", m.resolveVars(link)).cTag();<a name="line.485"></a>
-<span class="sourceLineNo">486</span> ContentResult cr = serializeAnything(out, value, cMeta, key, 2, pMeta, false);<a name="line.486"></a>
-<span class="sourceLineNo">487</span> if (cr == CR_NORMAL)<a name="line.487"></a>
-<span class="sourceLineNo">488</span> out.i(i+2);<a name="line.488"></a>
-<span class="sourceLineNo">489</span> if (link != null)<a name="line.489"></a>
-<span class="sourceLineNo">490</span> out.eTag("a");<a name="line.490"></a>
-<span class="sourceLineNo">491</span> } catch (SerializeException e) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span> throw e;<a name="line.492"></a>
-<span class="sourceLineNo">493</span> } catch (Error e) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span> throw e;<a name="line.494"></a>
-<span class="sourceLineNo">495</span> } catch (Throwable e) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span> e.printStackTrace();<a name="line.496"></a>
-<span class="sourceLineNo">497</span> onBeanGetterException(pMeta, e);<a name="line.497"></a>
-<span class="sourceLineNo">498</span> }<a name="line.498"></a>
-<span class="sourceLineNo">499</span> out.eTag("td").nl(i+2);<a name="line.499"></a>
-<span class="sourceLineNo">500</span> out.ie(i+1).eTag("tr").nl(i+1);<a name="line.500"></a>
-<span class="sourceLineNo">501</span> }<a name="line.501"></a>
-<span class="sourceLineNo">502</span> out.ie(i).eTag("table").nl(i);<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> @SuppressWarnings({ "rawtypes", "unchecked" })<a name="line.505"></a>
-<span class="sourceLineNo">506</span> private void serializeCollection(HtmlWriter out, Object in, ClassMeta<?> sType,<a name="line.506"></a>
-<span class="sourceLineNo">507</span> ClassMeta<?> eType, String name, BeanPropertyMeta ppMeta) throws Exception {<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span> ClassMeta<?> seType = sType.getElementType();<a name="line.509"></a>
-<span class="sourceLineNo">510</span> if (seType == null)<a name="line.510"></a>
-<span class="sourceLineNo">511</span> seType = object();<a name="line.511"></a>
+<span class="sourceLineNo">483</span> out.sTag(i+1, "tr").nl(i+1);<a name="line.483"></a>
+<span class="sourceLineNo">484</span> out.sTag(i+2, "td").text(key).eTag("td").nl(i+2);<a name="line.484"></a>
+<span class="sourceLineNo">485</span> out.oTag(i+2, "td");<a name="line.485"></a>
+<span class="sourceLineNo">486</span> String style = getStyle(this, pMeta, value);<a name="line.486"></a>
+<span class="sourceLineNo">487</span> if (style != null)<a name="line.487"></a>
+<span class="sourceLineNo">488</span> out.attr("style", style);<a name="line.488"></a>
+<span class="sourceLineNo">489</span> out.cTag();<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span> try {<a name="line.491"></a>
+<span class="sourceLineNo">492</span> if (link != null)<a name="line.492"></a>
+<span class="sourceLineNo">493</span> out.oTag(i+3, "a").attrUri("href", link).cTag();<a name="line.493"></a>
+<span class="sourceLineNo">494</span> ContentResult cr = serializeAnything(out, value, cMeta, key, 2, pMeta, false);<a name="line.494"></a>
+<span class="sourceLineNo">495</span> if (cr == CR_NORMAL)<a name="line.495"></a>
+<span class="sourceLineNo">496</span> out.i(i+2);<a name="line.496"></a>
+<span class="sourceLineNo">497</span> if (link != null)<a name="line.497"></a>
+<span class="sourceLineNo">498</span> out.eTag("a");<a name="line.498"></a>
+<span class="sourceLineNo">499</span> } catch (SerializeException e) {<a name="line.499"></a>
+<span class="sourceLineNo">500</span> throw e;<a name="line.500"></a>
+<span class="sourceLineNo">501</span> } catch (Error e) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span> throw e;<a name="line.502"></a>
+<span class="sourceLineNo">503</span> } catch (Throwable e) {<a name="line.503"></a>
+<span class="sourceLineNo">504</span> e.printStackTrace();<a name="line.504"></a>
+<span class="sourceLineNo">505</span> onBeanGetterException(pMeta, e);<a name="line.505"></a>
+<span class="sourceLineNo">506</span> }<a name="line.506"></a>
+<span class="sourceLineNo">507</span> out.eTag("td").nl(i+2);<a name="line.507"></a>
+<span class="sourceLineNo">508</span> out.ie(i+1).eTag("tr").nl(i+1);<a name="line.508"></a>
+<span class="sourceLineNo">509</span> }<a name="line.509"></a>
+<span class="sourceLineNo">510</span> out.ie(i).eTag("table").nl(i);<a name="line.510"></a>
+<span class="sourceLineNo">511</span> }<a name="line.511"></a>
<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span> Collection c = (sType.isCollection() ? (Collection)in : toList(sType.getInnerClass(), in));<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span> int i = indent;<a name="line.515"></a>
-<span class="sourceLineNo">516</span> if (c.isEmpty()) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span> out.appendln(i, "<ul></ul>");<a name="line.517"></a>
-<span class="sourceLineNo">518</span> return;<a name="line.518"></a>
-<span class="sourceLineNo">519</span> }<a name="line.519"></a>
+<span class="sourceLineNo">513</span> @SuppressWarnings({ "rawtypes", "unchecked", "hiding" })<a name="line.513"></a>
+<span class="sourceLineNo">514</span> private void serializeCollection(HtmlWriter out, Object in, ClassMeta<?> sType,<a name="line.514"></a>
+<span class="sourceLineNo">515</span> ClassMeta<?> eType, String name, BeanPropertyMeta ppMeta) throws Exception {<a name="line.515"></a>
+<span class="sourceLineNo">516</span><a name="line.516"></a>
+<span class="sourceLineNo">517</span> ClassMeta<?> seType = sType.getElementType();<a name="line.517"></a>
+<span class="sourceLineNo">518</span> if (seType == null)<a name="line.518"></a>
+<span class="sourceLineNo">519</span> seType = object();<a name="line.519"></a>
<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span> String type2 = null;<a name="line.521"></a>
-<span class="sourceLineNo">522</span> if (sType != eType)<a name="line.522"></a>
-<span class="sourceLineNo">523</span> type2 = sType.getDictionaryName();<a name="line.523"></a>
-<span class="sourceLineNo">524</span> if (type2 == null)<a name="line.524"></a>
-<span class="sourceLineNo">525</span> type2 = "array";<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span> c = sort(c);<a name="line.527"></a>
+<span class="sourceLineNo">521</span> Collection c = (sType.isCollection() ? (Collection)in : toList(sType.getInnerClass(), in));<a name="line.521"></a>
+<span class="sourceLineNo">522</span><a name="line.522"></a>
+<span class="sourceLineNo">523</span> int i = indent;<a name="line.523"></a>
+<span class="sourceLineNo">524</span> if (c.isEmpty()) {<a name="line.524"></a>
+<span class="sourceLineNo">525</span> out.appendln(i, "<ul></ul>");<a name="line.525"></a>
+<span class="sourceLineNo">526</span> return;<a name="line.526"></a>
+<span class="sourceLineNo">527</span> }<a name="line.527"></a>
<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span> HtmlBeanPropertyMeta hbpMeta = (ppMeta == null ? null : ppMeta.getExtendedMeta(HtmlBeanPropertyMeta.class));<a name="line.529"></a>
-<span class="sourceLineNo">530</span> String btpn = getBeanTypePropertyName(eType);<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span> // Look at the objects to see how we're going to handle them. Check the first object to see how we're going to<a name="line.532"></a>
-<span class="sourceLineNo">533</span> // handle this.<a name="line.533"></a>
-<span class="sourceLineNo">534</span> // If it's a map or bean, then we'll create a table.<a name="line.534"></a>
-<span class="sourceLineNo">535</span> // Otherwise, we'll create a list.<a name="line.535"></a>
-<span class="sourceLineNo">536</span> Object[] th = getTableHeaders(c, hbpMeta);<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span> if (th != null) {<a name="line.538"></a>
+<span class="sourceLineNo">529</span> String type2 = null;<a name="line.529"></a>
+<span class="sourceLineNo">530</span> if (sType != eType)<a name="line.530"></a>
+<span class="sourceLineNo">531</span> type2 = sType.getDictionaryName();<a name="line.531"></a>
+<span class="sourceLineNo">532</span> if (type2 == null)<a name="line.532"></a>
+<span class="sourceLineNo">533</span> type2 = "array";<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span> c = sort(c);<a name="line.535"></a>
+<span class="sourceLineNo">536</span><a name="line.536"></a>
+<span class="sourceLineNo">537</span> HtmlBeanPropertyMeta hbpMeta = (ppMeta == null ? null : ppMeta.getExtendedMeta(HtmlBeanPropertyMeta.class));<a name="line.537"></a>
+<span class="sourceLineNo">538</span> String btpn = getBeanTypePropertyName(eType);<a name="line.538"></a>
<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span> out.oTag(i, "table").attr(btpn, type2).append('>').nl(i+1);<a name="line.540"></a>
-<span class="sourceLineNo">541</span> out.sTag(i+1, "tr").nl(i+2);<a name="line.541"></a>
-<span class="sourceLineNo">542</span> for (Object key : th) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span> out.sTag(i+2, "th");<a name="line.543"></a>
-<span class="sourceLineNo">544</span> out.text(convertToType(key, String.class));<a name="line.544"></a>
-<span class="sourceLineNo">545</span> out.eTag("th").nl(i+2);<a name="line.545"></a>
-<span class="sourceLineNo">546</span> }<a name="line.546"></a>
-<span class="sourceLineNo">547</span> out.ie(i+1).eTag("tr").nl(i+1);<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span> for (Object o : c) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span> ClassMeta<?> cm = getClassMetaForObject(o);<a name="line.550"></a>
-<span class="sourceLineNo">551</span><a name="line.551"></a>
-<span class="sourceLineNo">552</span> if (cm != null && cm.getPojoSwap() != null) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span> PojoSwap f = cm.getPojoSwap();<a name="line.553"></a>
-<span class="sourceLineNo">554</span> o = f.swap(this, o);<a name="line.554"></a>
-<span class="sourceLineNo">555</span> cm = cm.getSerializedClassMeta();<a name="line.555"></a>
-<span class="sourceLineNo">556</span> }<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span> out.oTag(i+1, "tr");<a name="line.558"></a>
-<span class="sourceLineNo">559</span> String typeName = (cm == null ? null : cm.getDictionaryName());<a name="line.559"></a>
-<span class="sourceLineNo">560</span> String typeProperty = getBeanTypePropertyName(cm);<a name="line.560"></a>
-<span class="sourceLineNo">561</span><a name="line.561"></a>
-<span class="sourceLineNo">562</span> if (typeName != null && eType.getElementType() != cm)<a name="line.562"></a>
-<span class="sourceLineNo">563</span> out.attr(typeProperty, typeName);<a name="line.563"></a>
-<span class="sourceLineNo">564</span> out.cTag().nl(i+2);<a name="line.564"></a>
+<span class="sourceLineNo">540</span> // Look at the objects to see how we're going to handle them. Check the first object to see how we're going to<a name="line.540"></a>
+<span class="sourceLineNo">541</span> // handle this.<a name="line.541"></a>
+<span class="sourceLineNo">542</span> // If it's a map or bean, then we'll create a table.<a name="line.542"></a>
+<span class="sourceLineNo">543</span> // Otherwise, we'll create a list.<a name="line.543"></a>
+<span class="sourceLineNo">544</span> Object[] th = getTableHeaders(c, hbpMeta);<a name="line.544"></a>
+<span class="sourceLineNo">545</span><a name="line.545"></a>
+<span class="sourceLineNo">546</span> if (th != null) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span> out.oTag(i, "table").attr(btpn, type2).append('>').nl(i+1);<a name="line.548"></a>
+<span class="sourceLineNo">549</span> out.sTag(i+1, "tr").nl(i+2);<a name="line.549"></a>
+<span class="sourceLineNo">550</span> for (Object key : th) {<a name="line.550"></a>
+<span class="sourceLineNo">551</span> out.sTag(i+2, "th");<a name="line.551"></a>
+<span class="sourceLineNo">552</span> out.text(convertToType(key, String.class));<a name="line.552"></a>
+<span class="sourceLineNo">553</span> out.eTag("th").nl(i+2);<a name="line.553"></a>
+<span class="sourceLineNo">554</span> }<a name="line.554"></a>
+<span class="sourceLineNo">555</span> out.ie(i+1).eTag("tr").nl(i+1);<a name="line.555"></a>
+<span class="sourceLineNo">556</span><a name="line.556"></a>
+<span class="sourceLineNo">557</span> for (Object o : c) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span> ClassMeta<?> cm = getClassMetaForObject(o);<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span> if (cm != null && cm.getPojoSwap() != null) {<a name="line.560"></a>
+<span class="sourceLineNo">561</span> PojoSwap f = cm.getPojoSwap();<a name="line.561"></a>
+<span class="sourceLineNo">562</span> o = f.swap(this, o);<a name="line.562"></a>
+<span class="sourceLineNo">563</span> cm = cm.getSerializedClassMeta();<a name="line.563"></a>
+<span class="sourceLineNo">564</span> }<a name="line.564"></a>
<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span> if (cm == null) {<a name="line.566"></a>
-<span class="sourceLineNo">567</span> serializeAnything(out, o, null, null, 1, null, false);<a name="line.567"></a>
-<span class="sourceLineNo">568</span><a name="line.568"></a>
-<span class="sourceLineNo">569</span> } else if (cm.isMap() && ! (cm.isBeanMap())) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span> Map m2 = sort((Map)o);<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span> for (Object k : th) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span> out.sTag(i+2, "td");<a name="line.573"></a>
-<span class="sourceLineNo">574</span> ContentResult cr = serializeAnything(out, m2.get(k), eType.getElementType(), toString(k), 2, null, false);<a name="line.574"></a>
-<span class="sourceLineNo">575</span> if (cr == CR_NORMAL)<a name="line.575"></a>
-<span class="sourceLineNo">576</span> out.i(i+2);<a name="line.576"></a>
-<span class="sourceLineNo">577</span> out.eTag("td").nl(i+2);<a name="line.577"></a>
-<span class="sourceLineNo">578</span> }<a name="line.578"></a>
-<span class="sourceLineNo">579</span> } else {<a name="line.579"></a>
-<span class="sourceLineNo">580</span> BeanMap m2 = null;<a name="line.580"></a>
-<span class="sourceLineNo">581</span> if (o instanceof BeanMap)<a name="line.581"></a>
-<span class="sourceLineNo">582</span> m2 = (BeanMap)o;<a name="line.582"></a>
-<span class="sourceLineNo">583</span> else<a name="line.583"></a>
-<span class="sourceLineNo">584</span> m2 = toBeanMap(o);<a name="line.584"></a>
-<span class="sourceLineNo">585</span><a name="line.585"></a>
-<span class="sourceLineNo">586</span> for (Object k : th) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span> BeanMapEntry p = m2.getProperty(toString(k));<a name="line.587"></a>
-<span class="sourceLineNo">588</span> BeanPropertyMeta pMeta = p.getMeta();<a name="line.588"></a>
-<span class="sourceLineNo">589</span> String link = pMeta.getClassMeta().isCollectionOrArray() ? null : getLink(pMeta);<a name="line.589"></a>
-<span class="sourceLineNo">590</span> Object value = p.getValue();<a name="line.590"></a>
-<span class="sourceLineNo">591</span> String style = getStyle(this, pMeta, value);<a name="line.591"></a>
-<span class="sourceLineNo">592</span> out.oTag(i+2, "td");<a name="line.592"></a>
-<span class="sourceLineNo">593</span> if (style != null)<a name="line.593"></a>
-<span class="sourceLineNo">594</span> out.attr("style", style);<a name="line.594"></a>
-<span class="sourceLineNo">595</span> out.cTag();<a name="line.595"></a>
-<span class="sourceLineNo">596</span> if (link != null)<a name="line.596"></a>
-<span class="sourceLineNo">597</span> out.oTag("a").attrUri("href", m2.resolveVars(link)).cTag();<a name="line.597"></a>
-<span class="sourceLineNo">598</span> ContentResult cr = serializeAnything(out, value, pMeta.getClassMeta(), p.getKey().toString(), 2, pMeta, false);<a name="line.598"></a>
-<span class="sourceLineNo">599</span> if (cr == CR_NORMAL)<a name="line.599"></a>
-<span class="sourceLineNo">600</span> out.i(i+2);<a name="line.600"></a>
-<span class="sourceLineNo">601</span> if (link != null)<a name="line.601"></a>
-<span class="sourceLineNo">602</span> out.eTag("a");<a name="line.602"></a>
-<span class="sourceLineNo">603</span> out.eTag("td").nl(i+2);<a name="line.603"></a>
-<span class="sourceLineNo">604</span> }<a name="line.604"></a>
-<span class="sourceLineNo">605</span> }<a name="line.605"></a>
-<span class="sourceLineNo">606</span> out.ie(i+1).eTag("tr").nl(i+1);<a name="line.606"></a>
-<span class="sourceLineNo">607</span> }<a name="line.607"></a>
-<span class="sourceLineNo">608</span> out.ie(i).eTag("table").nl(i);<a name="line.608"></a>
-<span class="sourceLineNo">609</span><a name="line.609"></a>
-<span class="sourceLineNo">610</span> } else {<a name="line.610"></a>
-<span class="sourceLineNo">611</span> out.oTag(i, "ul");<a name="line.611"></a>
-<span class="sourceLineNo">612</span> if (! type2.equals("array"))<a name="line.612"></a>
-<span class="sourceLineNo">613</span> out.attr(btpn, type2);<a name="line.613"></a>
-<span class="sourceLineNo">614</span> out.append('>').nl(i+1);<a name="line.614"></a>
-<span class="sourceLineNo">615</span> for (Object o : c) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span> out.oTag(i+1, "li");<a name="line.616"></a>
-<span class="sourceLineNo">617</span> String style = getStyle(this, ppMeta, o);<a name="line.617"></a>
-<span class="sourceLineNo">618</span> String link = getLink(ppMeta);<a name="line.618"></a>
-<span class="sourceLineNo">619</span> if (style != null)<a name="line.619"></a>
-<span class="sourceLineNo">620</span> out.attr("style", style);<a name="line.620"></a>
-<span class="sourceLineNo">621</span> out.cTag();<a name="line.621"></a>
-<span class="sourceLineNo">622</span> if (link != null)<a name="line.622"></a>
-<span class="sourceLineNo">623</span> out.oTag(i+2, "a").attrUri("href", link.replace("{#}", StringUtils.toString(o))).cTag();<a name="line.623"></a>
-<span class="sourceLineNo">624</span> ContentResult cr = serializeAnything(out, o, eType.getElementType(), name, 1, null, false);<a name="line.624"></a>
-<span class="sourceLineNo">625</span> if (link != null)<a name="line.625"></a>
-<span class="sourceLineNo">626</span> out.eTag("a");<a name="line.626"></a>
-<span class="sourceLineNo">627</span> if (cr == CR_NORMAL)<a name="line.627"></a>
-<span class="sourceLineNo">628</span> out.ie(i+1);<a name="line.628"></a>
-<span class="sourceLineNo">629</span> out.eTag("li").nl(i+1);<a name="line.629"></a>
-<span class="sourceLineNo">630</span> }<a name="line.630"></a>
-<span class="sourceLineNo">631</span> out.ie(i).eTag("ul").nl(i);<a name="line.631"></a>
-<span class="sourceLineNo">632</span> }<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> private static HtmlRender<?> getRender(HtmlSerializerSession session, BeanPropertyMeta pMeta, Object value) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span> if (pMeta == null)<a name="line.636"></a>
-<span class="sourceLineNo">637</span> return null;<a name="line.637"></a>
-<span class="sourceLineNo">638</span> HtmlBeanPropertyMeta hpMeta = pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class);<a name="line.638"></a>
-<span class="sourceLineNo">639</span> HtmlRender<?> render = hpMeta.getRender();<a name="line.639"></a>
-<span class="sourceLineNo">640</span> if (render != null)<a name="line.640"></a>
-<span class="sourceLineNo">641</span> return render;<a name="line.641"></a>
-<span class="sourceLineNo">642</span> ClassMeta<?> cMeta = session.getClassMetaForObject(value);<a name="line.642"></a>
-<span class="sourceLineNo">643</span> render = cMeta == null ? null : cMeta.getExtendedMeta(HtmlClassMeta.class).getRender();<a name="line.643"></a>
-<span class="sourceLineNo">644</span> return render;<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> @SuppressWarnings({"rawtypes","unchecked"})<a name="line.647"></a>
-<span class="sourceLineNo">648</span> private static String getStyle(HtmlSerializerSession session, BeanPropertyMeta pMeta, Object value) {<a name="line.648"></a>
-<span class="sourceLineNo">649</span> HtmlRender render = getRender(session, pMeta, value);<a name="line.649"></a>
-<span class="sourceLineNo">650</span> return render == null ? null : render.getStyle(session, value);<a name="line.650"></a>
-<span class="sourceLineNo">651</span> }<a name="line.651"></a>
-<span class="sourceLineNo">652</span><a name="line.652"></a>
-<span class="sourceLineNo">653</span> private static String getLink(BeanPropertyMeta pMeta) {<a name="line.653"></a>
-<span class="sourceLineNo">654</span> return pMeta == null ? null : pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).getLink();<a name="line.654"></a>
-<span class="sourceLineNo">655</span> }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span> /*<a name="line.657"></a>
-<span class="sourceLineNo">658</span> * Returns the table column headers for the specified collection of objects.<a name="line.658"></a>
-<span class="sourceLineNo">659</span> * Returns null if collection should not be serialized as a 2-dimensional table.<a name="line.659"></a>
-<span class="sourceLineNo">660</span> * 2-dimensional tables are used for collections of objects that all have the same set of property names.<a name="line.660"></a>
-<span class="sourceLineNo">661</span> */<a name="line.661"></a>
-<span class="sourceLineNo">662</span> @SuppressWarnings({ "rawtypes", "unchecked" })<a name="line.662"></a>
-<span class="sourceLineNo">663</span> private Object[] getTableHeaders(Collection c, HtmlBeanPropertyMeta hbpMeta) throws Exception {<a name="line.663"></a>
-<span class="sourceLineNo">664</span> if (c.size() == 0)<a name="line.664"></a>
-<span class="sourceLineNo">665</span> return null;<a name="line.665"></a>
-<span class="sourceLineNo">666</span> c = sort(c);<a name="line.666"></a>
-<span class="sourceLineNo">667</span> Object[] th;<a name="line.667"></a>
-<span class="sourceLineNo">668</span> Set<ClassMeta> prevC = new HashSet<ClassMeta>();<a name="line.668"></a>
-<span class="sourceLineNo">669</span> Object o1 = null;<a name="line.669"></a>
-<span class="sourceLineNo">670</span> for (Object o : c)<a name="line.670"></a>
-<span class="sourceLineNo">671</span> if (o != null) {<a name="line.671"></a>
-<span class="sourceLineNo">672</span> o1 = o;<a name="line.672"></a>
-<span class="sourceLineNo">673</span> break;<a name="line.673"></a>
-<span class="sourceLineNo">674</span> }<a name="line.674"></a>
-<span class="sourceLineNo">675</span> if (o1 == null)<a name="line.675"></a>
-<span class="sourceLineNo">676</span> return null;<a name="line.676"></a>
-<span class="sourceLineNo">677</span> ClassMeta<?> cm = getClassMetaForObject(o1);<a name="line.677"></a>
-<span class="sourceLineNo">678</span> if (cm.getPojoSwap() != null) {<a name="line.678"></a>
-<span class="sourceLineNo">679</span> PojoSwap f = cm.getPojoSwap();<a name="line.679"></a>
-<span class="sourceLineNo">680</span> o1 = f.swap(this, o1);<a name="line.680"></a>
-<span class="sourceLineNo">681</span> cm = cm.getSerializedClassMeta();<a name="line.681"></a>
-<span class="sourceLineNo">682</span> }<a name="line.682"></a>
-<span class="sourceLineNo">683</span> if (cm == null || ! cm.isMapOrBean())<a name="line.683"></a>
-<span class="sourceLineNo">684</span> return null;<a name="line.684"></a>
-<span class="sourceLineNo">685</span> if (cm.getInnerClass().isAnnotationPresent(HtmlLink.class))<a name="line.685"></a>
+<span class="sourceLineNo">566</span> out.oTag(i+1, "tr");<a name="line.566"></a>
+<span class="sourceLineNo">567</span> String typeName = (cm == null ? null : cm.getDictionaryName());<a name="line.567"></a>
+<span class="sourceLineNo">568</span> String typeProperty = getBeanTypePropertyName(cm);<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span> if (typeName != null && eType.getElementType() != cm)<a name="line.570"></a>
+<span class="sourceLineNo">571</span> out.attr(typeProperty, typeName);<a name="line.571"></a>
+<span class="sourceLineNo">572</span> out.cTag().nl(i+2);<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span> if (cm == null) {<a name="line.574"></a>
+<span class="sourceLineNo">575</span> serializeAnything(out, o, null, null, 1, null, false);<a name="line.575"></a>
+<span class="sourceLineNo">576</span><a name="line.576"></a>
+<span class="sourceLineNo">577</span> } else if (cm.isMap() && ! (cm.isBeanMap())) {<a name="line.577"></a>
+<span class="sourceLineNo">578</span> Map m2 = sort((Map)o);<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span> for (Object k : th) {<a name="line.580"></a>
+<span class="sourceLineNo">581</span> out.sTag(i+2, "td");<a name="line.581"></a>
+<span class="sourceLineNo">582</span> ContentResult cr = serializeAnything(out, m2.get(k), eType.getElementType(), toString(k), 2, null, false);<a name="line.582"></a>
+<span class="sourceLineNo">583</span> if (cr == CR_NORMAL)<a name="line.583"></a>
+<span class="sourceLineNo">584</span> out.i(i+2);<a name="line.584"></a>
+<span class="sourceLineNo">585</span> out.eTag("td").nl(i+2);<a name="line.585"></a>
+<span class="sourceLineNo">586</span> }<a name="line.586"></a>
+<span class="sourceLineNo">587</span> } else {<a name="line.587"></a>
+<span class="sourceLineNo">588</span> BeanMap m2 = null;<a name="line.588"></a>
+<span class="sourceLineNo">589</span> if (o instanceof BeanMap)<a name="line.589"></a>
+<span class="sourceLineNo">590</span> m2 = (BeanMap)o;<a name="line.590"></a>
+<span class="sourceLineNo">591</span> else<a name="line.591"></a>
+<span class="sourceLineNo">592</span> m2 = toBeanMap(o);<a name="line.592"></a>
+<span class="sourceLineNo">593</span><a name="line.593"></a>
+<span class="sourceLineNo">594</span> for (Object k : th) {<a name="line.594"></a>
+<span class="sourceLineNo">595</span> BeanMapEntry p = m2.getProperty(toString(k));<a name="line.595"></a>
+<span class="sourceLineNo">596</span> BeanPropertyMeta pMeta = p.getMeta();<a name="line.596"></a>
+<span class="sourceLineNo">597</span> Object value = p.getValue();<a name="line.597"></a>
+<span class="sourceLineNo">598</span><a name="line.598"></a>
+<span class="sourceLineNo">599</span> String link = null, anchorText = null;<a name="line.599"></a>
+<span class="sourceLineNo">600</span> if (! pMeta.getClassMeta().isCollectionOrArray()) {<a name="line.600"></a>
+<span class="sourceLineNo">601</span> link = m2.resolveVars(getLink(pMeta));<a name="line.601"></a>
+<span class="sourceLineNo">602</span> anchorText = m2.resolveVars(getAnchorText(pMeta));<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> if (anchorText != null)<a name="line.605"></a>
+<span class="sourceLineNo">606</span> value = anchorText;<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span> String style = getStyle(this, pMeta, value);<a name="line.608"></a>
+<span class="sourceLineNo">609</span> out.oTag(i+2, "td");<a name="line.609"></a>
+<span class="sourceLineNo">610</span> if (style != null)<a name="line.610"></a>
+<span class="sourceLineNo">611</span> out.attr("style", style);<a name="line.611"></a>
+<span class="sourceLineNo">612</span> out.cTag();<a name="line.612"></a>
+<span class="sourceLineNo">613</span> if (link != null)<a name="line.613"></a>
+<span class="sourceLineNo">614</span> out.oTag("a").attrUri("href", link).cTag();<a name="line.614"></a>
+<span class="sourceLineNo">615</span> ContentResult cr = serializeAnything(out, value, pMeta.getClassMeta(), p.getKey().toString(), 2, pMeta, false);<a name="line.615"></a>
+<span class="sourceLineNo">616</span> if (cr == CR_NORMAL)<a name="line.616"></a>
+<span class="sourceLineNo">617</span> out.i(i+2);<a name="line.617"></a>
+<span class="sourceLineNo">618</span> if (link != null)<a name="line.618"></a>
+<span class="sourceLineNo">619</span> out.eTag("a");<a name="line.619"></a>
+<span class="sourceLineNo">620</span> out.eTag("td").nl(i+2);<a name="line.620"></a>
+<span class="sourceLineNo">621</span> }<a name="line.621"></a>
+<span class="sourceLineNo">622</span> }<a name="line.622"></a>
+<span class="sourceLineNo">623</span> out.ie(i+1).eTag("tr").nl(i+1);<a name="line.623"></a>
+<span class="sourceLineNo">624</span> }<a name="line.624"></a>
+<span class="sourceLineNo">625</span> out.ie(i).eTag("table").nl(i);<a name="line.625"></a>
+<span class="sourceLineNo">626</span><a name="line.626"></a>
+<span class="sourceLineNo">627</span> } else {<a name="line.627"></a>
+<span class="sourceLineNo">628</span> out.oTag(i, "ul");<a name="line.628"></a>
+<span class="sourceLineNo">629</span> if (! type2.equals("array"))<a name="line.629"></a>
+<span class="sourceLineNo">630</span> out.attr(btpn, type2);<a name="line.630"></a>
+<span class="sourceLineNo">631</span> out.append('>').nl(i+1);<a name="line.631"></a>
+<span class="sourceLineNo">632</span> for (Object o : c) {<a name="line.632"></a>
+<span class="sourceLineNo">633</span> out.oTag(i+1, "li");<a name="line.633"></a>
+<span class="sourceLineNo">634</span> String style = getStyle(this, ppMeta, o);<a name="line.634"></a>
+<span class="sourceLineNo">635</span> String link = getLink(ppMeta);<a name="line.635"></a>
+<span class="sourceLineNo">636</span> if (style != null)<a name="line.636"></a>
+<span class="sourceLineNo">637</span> out.attr("style", style);<a name="line.637"></a>
+<span class="sourceLineNo">638</span> out.cTag();<a name="line.638"></a>
+<span class="sourceLineNo">639</span> if (link != null)<a name="line.639"></a>
+<span class="sourceLineNo">640</span> out.oTag(i+2, "a").attrUri("href", link.replace("{#}", StringUtils.toString(o))).cTag();<a name="line.640"></a>
+<span class="sourceLineNo">641</span> ContentResult cr = serializeAnything(out, o, eType.getElementType(), name, 1, null, false);<a name="line.641"></a>
+<span class="sourceLineNo">642</span> if (link != null)<a name="line.642"></a>
+<span class="sourceLineNo">643</span> out.eTag("a");<a name="line.643"></a>
+<span class="sourceLineNo">644</span> if (cr == CR_NORMAL)<a name="line.644"></a>
+<span class="sourceLineNo">645</span> out.ie(i+1);<a name="line.645"></a>
+<span class="sourceLineNo">646</span> out.eTag("li").nl(i+1);<a name="line.646"></a>
+<span class="sourceLineNo">647</span> }<a name="line.647"></a>
+<span class="sourceLineNo">648</span> out.ie(i).eTag("ul").nl(i);<a name="line.648"></a>
+<span class="sourceLineNo">649</span> }<a name="line.649"></a>
+<span class="sourceLineNo">650</span> }<a name="line.650"></a>
+<span class="sourceLineNo">651</span><a name="line.651"></a>
+<span class="sourceLineNo">652</span> private static HtmlRender<?> getRender(HtmlSerializerSession session, BeanPropertyMeta pMeta, Object value) {<a name="line.652"></a>
+<span class="sourceLineNo">653</span> if (pMeta == null)<a name="line.653"></a>
+<span class="sourceLineNo">654</span> return null;<a name="line.654"></a>
+<span class="sourceLineNo">655</span> HtmlBeanPropertyMeta hpMeta = pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class);<a name="line.655"></a>
+<span class="sourceLineNo">656</span> HtmlRender<?> render = hpMeta.getRender();<a name="line.656"></a>
+<span class="sourceLineNo">657</span> if (render != null)<a name="line.657"></a>
+<span class="sourceLineNo">658</span> return render;<a name="line.658"></a>
+<span class="sourceLineNo">659</span> ClassMeta<?> cMeta = session.getClassMetaForObject(value);<a name="line.659"></a>
+<span class="sourceLineNo">660</span> render = cMeta == null ? null : cMeta.getExtendedMeta(HtmlClassMeta.class).getRender();<a name="line.660"></a>
+<span class="sourceLineNo">661</span> return render;<a name="line.661"></a>
+<span class="sourceLineNo">662</span> }<a name="line.662"></a>
+<span class="sourceLineNo">663</span><a name="line.663"></a>
+<span class="sourceLineNo">664</span> @SuppressWarnings({"rawtypes","unchecked"})<a name="line.664"></a>
+<span class="sourceLineNo">665</span> private static String getStyle(HtmlSerializerSession session, BeanPropertyMeta pMeta, Object value) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span> HtmlRender render = getRender(session, pMeta, value);<a name="line.666"></a>
+<span class="sourceLineNo">667</span> return render == null ? null : render.getStyle(session, value);<a name="line.667"></a>
+<span class="sourceLineNo">668</span> }<a name="line.668"></a>
+<span class="sourceLineNo">669</span><a name="line.669"></a>
+<span class="sourceLineNo">670</span> private static String getLink(BeanPropertyMeta pMeta) {<a name="line.670"></a>
+<span class="sourceLineNo">671</span> return pMeta == null ? null : pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).getLink();<a name="line.671"></a>
+<span class="sourceLineNo">672</span> }<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span> private static String getAnchorText(BeanPropertyMeta pMeta) {<a name="line.674"></a>
+<span class="sourceLineNo">675</span> return pMeta == null ? null : pMeta.getExtendedMeta(HtmlBeanPropertyMeta.class).getAnchorText();<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> /*<a name="line.678"></a>
+<span class="sourceLineNo">679</span> * Returns the table column headers for the specified collection of objects.<a name="line.679"></a>
+<span class="sourceLineNo">680</span> * Returns null if collection should not be serialized as a 2-dimensional table.<a name="line.680"></a>
+<span class="sourceLineNo">681</span> * 2-dimensional tables are used for collections of objects that all have the same set of property names.<a name="line.681"></a>
+<span class="sourceLineNo">682</span> */<a name="line.682"></a>
+<span class="sourceLineNo">683</span> @SuppressWarnings({ "rawtypes", "unchecked" })<a name="line.683"></a>
+<span class="sourceLineNo">684</span> private Object[] getTableHeaders(Collection c, HtmlBeanPropertyMeta hbpMeta) throws Exception {<a name="line.684"></a>
+<span class="sourceLineNo">685</span> if (c.size() == 0)<a name="line.685"></a>
<span class="sourceLineNo">686</span> return null;<a name="line.686"></a>
-<span class="sourceLineNo">687</span> HtmlClassMeta h = cm.getExtendedMeta(HtmlClassMeta.class);<a name="line.687"></a>
-<span class="sourceLineNo">688</span> if (h.isNoTables() || (hbpMeta != null && hbpMeta.isNoTables()))<a name="line.688"></a>
-<span class="sourceLineNo">689</span> return null;<a name="line.689"></a>
-<span class="sourceLineNo">690</span> if (h.isNoTableHeaders() || (hbpMeta != null && hbpMeta.isNoTableHeaders()))<a name="line.690"></a>
-<span class="sourceLineNo">691</span> return new Object[0];<a name="line.691"></a>
-<span class="sourceLineNo">692</span> if (canIgnoreValue(cm, null, o1))<a name="line.692"></a>
-<span class="sourceLineNo">693</span> return null;<a name="line.693"></a>
-<span class="sourceLineNo">694</span> if (cm.isMap() && ! cm.isBeanMap()) {<a name="line.694"></a>
-<span class="sourceLineNo">695</span> Set<Object> set = new LinkedHashSet<Object>();<a name="line.695"></a>
-<span class="sourceLineNo">696</span> for (Object o : c) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span> if (! canIgnoreValue(cm, null, o)) {<a name="line.697"></a>
-<span class="sourceLineNo">698</span> if (! cm.isInstance(o))<a name="line.698"></a>
-<span class="sourceLineNo">699</span> return null;<a name="line.699"></a>
-<span class="sourceLineNo">700</span> Map m = sort((Map)o);<a name="line.700"></a>
-<span class="sourceLineNo">701</span> for (Map.Entry e : (Set<Map.Entry>)m.entrySet()) {<a name="line.701"></a>
-<span class="sourceLineNo">702</span> if (e.getValue() != null)<a name="line.702"></a>
-<span class="sourceLineNo">703</span> set.add(e.getKey() == null ? null : e.getKey());<a name="line.703"></a>
-<span class="sourceLineNo">704</span> }<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> th = set.toArray(new Object[set.size()]);<a name="line.707"></a>
-<span class="sourceLineNo">708</span> } else {<a name="line.708"></a>
-<span class="sourceLineNo">709</span> Map<String,Boolean> m = new LinkedHashMap<String,Boolean>();<a name="line.709"></a>
-<span class="sourceLineNo">710</span> for (Object o : c) {<a name="line.710"></a>
-<span class="sourceLineNo">711</span> if (! canIgnoreValue(cm, null, o)) {<a name="line.711"></a>
-<span class="sourceLineNo">712</span> if (! cm.isInstance(o))<a name="line.712"></a>
-<span class="sourceLineNo">713</span> return null;<a name="line.713"></a>
-<span class="sourceLineNo">714</span> BeanMap<?> bm = (o instanceof BeanMap ? (BeanMap)o : toBeanMap(o));<a name="line.714"></a>
-<span class="sourceLineNo">715</span> for (Map.Entry<String,Object> e : bm.entrySet()) {<a name="line.715"></a>
-<span class="sourceLineNo">716</span> String key = e.getKey();<a name="line.716"></a>
-<span class="sourceLineNo">717</span> if (e.getValue() != null)<a name="line.717"></a>
-<span class="sourceLineNo">718</span> m.put(key, true);<a name="line.718"></a>
-<span class="sourceLineNo">719</span> else if (! m.containsKey(key))<a name="line.719"></a>
-<span class="sourceLineNo">720</span> m.put(key, false);<a name="line.720"></a>
-<span class="sourceLineNo">721</span> }<a name="line.721"></a>
-<span class="sourceLineNo">722</span> }<a name="line.722"></a>
-<span class="sourceLineNo">723</span> }<a name="line.723"></a>
-<span class="sourceLineNo">724</span> for (Iterator<Boolean> i = m.values().iterator(); i.hasNext();)<a name="line.724"></a>
-<span class="sourceLineNo">725</span> if (! i.next())<a name="line.725"></a>
-<span class="sourceLineNo">726</span> i.remove();<a name="line.726"></a>
-<span class="sourceLineNo">727</span> th = m.keySet().toArray(new Object[m.size()]);<a name="line.727"></a>
-<span class="sourceLineNo">728</span> }<a name="line.728"></a>
-<span class="sourceLineNo">729</span> prevC.add(cm);<a name="line.729"></a>
-<span class="sourceLineNo">730</span> boolean isSortable = true;<a name="line.730"></a>
-<span class="sourceLineNo">731</span> for (Object o : th)<a name="line.731"></a>
-<span class="sourceLineNo">732</span> isSortable &= (o instanceof Comparable);<a name="line.732"></a>
-<span class="sourceLineNo">733</span> Set<Object> s = (isSortable ? new TreeSet<Object>() : new LinkedHashSet<Object>());<a name="line.733"></a>
-<span class="sourceLineNo">734</span> s.addAll(Arrays.asList(th));<a name="line.734"></a>
-<span class="sourceLineNo">735</span><a name="line.735"></a>
-<span class="sourceLineNo">736</span> for (Object o : c) {<a name="line.736"></a>
-<span class="sourceLineNo">737</span> if (o == null)<a name="line.737"></a>
-<span class="sourceLineNo">738</span> continue;<a name="line.738"></a>
-<span class="sourceLineNo">739</span> cm = getClassMetaForObject(o);<a name="line.739"></a>
-<span class="sourceLineNo">740</span> if (cm != null && cm.getPojoSwap() != null) {<a name="line.740"></a>
-<span class="sourceLineNo">741</span> PojoSwap f = cm.getPojoSwap();<a name="line.741"></a>
-<span class="sourceLineNo">742</span> o = f.swap(this, o);<a name="line.742"></a>
-<span class="sourceLineNo">743</span> cm = cm.getSerializedClassMeta();<a name="line.743"></a>
+<span class="sourceLineNo">687</span> c = sort(c);<a name="line.687"></a>
+<span class="sourceLineNo">688</span> Object[] th;<a name="line.688"></a>
+<span class="sourceLineNo">689</span> Set<ClassMeta> prevC = new HashSet<ClassMeta>();<a name="line.689"></a>
+<span class="sourceLineNo">690</span> Object o1 = null;<a name="line.690"></a>
+<span class="sourceLineNo">691</span> for (Object o : c)<a name="line.691"></a>
+<span class="sourceLineNo">692</span> if (o != null) {<a name="line.692"></a>
+<span class="sourceLineNo">693</span> o1 = o;<a name="line.693"></a>
+<span class="sourceLineNo">694</span> break;<a name="line.694"></a>
+<span class="sourceLineNo">695</span> }<a name="line.695"></a>
+<span class="sourceLineNo">696</span> if (o1 == null)<a name="line.696"></a>
+<span class="sourceLineNo">697</span> return null;<a name="line.697"></a>
+<span class="sourceLineNo">698</span> ClassMeta<?> cm = getClassMetaForObject(o1);<a name="line.698"></a>
+<span class="sourceLineNo">699</span> if (cm.getPojoSwap() != null) {<a name="line.699"></a>
+<span class="sourceLineNo">700</span> PojoSwap f = cm.getPojoSwap();<a name="line.700"></a>
+<span class="sourceLineNo">701</span> o1 = f.swap(this, o1);<a name="line.701"></a>
+<span class="sourceLineNo">702</span> cm = cm.getSerializedClassMeta();<a name="line.702"></a>
+<span class="sourceLineNo">703</span> }<a name="line.703"></a>
+<span class="sourceLineNo">704</span> if (cm == null || ! cm.isMapOrBean())<a name="line.704"></a>
+<span class="sourceLineNo">705</span> return null;<a name="line.705"></a>
+<span class="sourceLineNo">706</span> if (cm.getInnerClass().isAnnotationPresent(HtmlLink.class))<a name="line.706"></a>
+<span class="sourceLineNo">707</span> return null;<a name="line.707"></a>
+<span class="sourceLineNo">708</span> HtmlClassMeta h = cm.getExtendedMeta(HtmlClassMeta.class);<a name="line.708"></a>
+<span class="sourceLineNo">709</span> if (h.isNoTables() || (hbpMeta != null && hbpMeta.isNoTables()))<a name="line.709"></a>
+<span class="sourceLineNo">710</span> return null;<a name="line.710"></a>
+<span class="sourceLineNo">711</span> if (h.isNoTableHeaders() || (hbpMeta != null && hbpMeta.isNoTableHeaders()))<a name="line.711"></a>
+<span class="sourceLineNo">712</span> return new Object[0];<a name="line.712"></a>
+<span class="sourceLineNo">713</span> if (canIgnoreValue(cm, null, o1))<a name="line.713"></a>
+<span class="sourceLineNo">714</span> return null;<a name="line.714"></a>
+<span class="sourceLineNo">715</span> if (cm.isMap() && ! cm.isBeanMap()) {<a name="line.715"></a>
+<span class="sourceLineNo">716</span> Set<Object> set = new LinkedHashSet<Object>();<a name="line.716"></a>
+<span class="sourceLineNo">717</span> for (Object o : c) {<a name="line.717"></a>
+<span class="sourceLineNo">718</span> if (! canIgnoreValue(cm, null, o)) {<a name="line.718"></a>
+<span class="sourceLineNo">719</span> if (! cm.isInstance(o))<a name="line.719"></a>
+<span class="sourceLineNo">720</span> return null;<a name="line.720"></a>
+<span class="sourceLineNo">721</span> Map m = sort((Map)o);<a name="line.721"></a>
+<span class="sourceLineNo">722</span> for (Map.Entry e : (Set<Map.Entry>)m.entrySet()) {<a name="line.722"></a>
+<span class="sourceLineNo">723</span> if (e.getValue() != null)<a name="line.723"></a>
+<span class="sourceLineNo">724</span> set.add(e.getKey() == null ? null : e.getKey());<a name="line.724"></a>
+<span class="sourceLineNo">725</span> }<a name="line.725"></a>
+<span class="sourceLineNo">726</span> }<a name="line.726"></a>
+<span class="sourceLineNo">727</span> }<a name="line.727"></a>
+<span class="sourceLineNo">728</span> th = set.toArray(new Object[set.size()]);<a name="line.728"></a>
+<span class="sourceLineNo">729</span> } else {<a name="line.729"></a>
+<span class="sourceLineNo">730</span> Map<String,Boolean> m = new LinkedHashMap<String,Boolean>();<a name="line.730"></a>
+<span class="sourceLineNo">731</span> for (Object o : c) {<a name="line.731"></a>
+<span class="sourceLineNo">732</span> if (! canIgnoreValue(cm, null, o)) {<a name="line.732"></a>
+<span class="sourceLineNo">733</span> if (! cm.isInstance(o))<a name="line.733"></a>
+<span class="sourceLineNo">734</span> return null;<a name="line.734"></a>
+<span class="sourceLineNo">735</span> BeanMap<?> bm = (o instanceof BeanMap ? (BeanMap)o : toBeanMap(o));<a name="line.735"></a>
+<span class="sourceLineNo">736</span> for (Map.Entry<String,Object> e : bm.entrySet()) {<a name="line.736"></a>
+<span class="sourceLineNo">737</span> String key = e.getKey();<a name="line.737"></a>
+<span class="sourceLineNo">738</span> if (e.getValue() != null)<a name="line.738"></a>
+<span class="sourceLineNo">739</span> m.put(key, true);<a name="line.739"></a>
+<span class="sourceLineNo">740</span> else if (! m.containsKey(key))<a name="line.740"></a>
+<span class="sourceLineNo">741</span> m.put(key, false);<a name="line.741"></a>
+<span class="sourceLineNo">742</span> }<a name="line.742"></a>
+<span class="sourceLineNo">743</span> }<a name="line.743"></a>
<span class="sourceLineNo">744</span> }<a name="line.744"></a>
-<span class="sourceLineNo">745</span> if (prevC.contains(cm))<a name="line.745"></a>
-<span class="sourceLineNo">746</span> continue;<a name="line.746"></a>
-<span class="sourceLineNo">747</span> if (cm == null || ! (cm.isMap() || cm.isBean()))<a name="line.747"></a>
-<span class="sourceLineNo">748</span> return null;<a name="line.748"></a>
-<span class="sourceLineNo">749</span> if (cm.getInnerClass().isAnnotationPresent(HtmlLink.class))<a name="line.749"></a>
-<span class="sourceLineNo">750</span> return null;<a name="line.750"></a>
-<span class="sourceLineNo">751</span> if (canIgnoreValue(cm, null, o))<a name="line.751"></a>
-<span class="sourceLineNo">752</span> return null;<a name="line.752"></a>
-<span class="sourceLineNo">753</span> if (cm.isMap() && ! cm.isBeanMap()) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span> Map m = (Map)o;<a name="line.754"></a>
-<span class="sourceLineNo">755</span> if (th.length != m.keySet().size())<a name="line.755"></a>
-<span class="sourceLineNo">756</span> return null;<a name="line.756"></a>
-<span class="sourceLineNo">757</span> for (Object k : m.keySet())<a name="line.757"></a>
-<span class="sourceLineNo">758</span> if (! s.contains(k.toString()))<a name="line.758"></a>
-<span class="sourceLineNo">759</span> return null;<a name="line.759"></a>
-<span class="sourceLineNo">760</span> } else {<a name="line.760"></a>
-<span class="sourceLineNo">761</span> BeanMap<?> bm = (o instanceof BeanMap ? (BeanMap)o : toBeanMap(o));<a name="line.761"></a>
-<span class="sourceLineNo">762</span> int l = 0;<a name="line.762"></a>
-<span class="sourceLineNo">763</span> for (String k : bm.keySet()) {<a name="line.763"></a>
-<span class="sourceLineNo">764</span> if (! s.contains(k))<a name="line.764"></a>
-<span class="sourceLineNo">765</span> return null;<a name="line.765"></a>
-<span class="sourceLineNo">766</span> l++;<a name="line.766"></a>
-<span class="sourceLineNo">767</span> }<a name="line.767"></a>
-<span class="sourceLineNo">768</span> if (s.size() != l)<a name="line.768"></a>
-<span class="sourceLineNo">769</span> return null;<a name="line.769"></a>
-<span class="sourceLineNo">770</span> }<a name="line.770"></a>
-<span class="sourceLineNo">771</span> }<a name="line.771"></a>
-<span class="sourceLineNo">772</span> return th;<a name="line.772"></a>
-<span class="sourceLineNo">773</span> }<a name="line.773"></a>
-<span class="sourceLineNo">774</span>}<a name="line.774"></a>
+<span class="sourceLineNo">745</span> for (Iterator<Boolean> i = m.values().iterator(); i.hasNext();)<a name="line.745"></a>
+<span class="sourceLineNo">746</span> if (! i.next())<a name="line.746"></a>
+<span class="sourceLineNo">747</span> i.remove();<a name="line.747"></a>
+<span class="sourceLineNo">748</span> th = m.keySet().toArray(new Object[m.size()]);<a name="line.748"></a>
+<span class="sourceLineNo">749</span> }<a name="line.749"></a>
+<span class="sourceLineNo">750</span> prevC.add(cm);<a name="line.750"></a>
+<span class="sourceLineNo">751</span> boolean isSortable = true;<a name="line.751"></a>
+<span class="sourceLineNo">752</span> for (Object o : th)<a name="line.752"></a>
+<span class="sourceLineNo">753</span> isSortable &= (o instanceof Comparable);<a name="line.753"></a>
+<span class="sourceLineNo">754</span> Set<Object> s = (isSortable ? new TreeSet<Object>() : new LinkedHashSet<Object>());<a name="line.754"></a>
+<span class="sourceLineNo">755</span> s.addAll(Arrays.asList(th));<a name="line.755"></a>
+<span class="sourceLineNo">756</span><a name="line.756"></a>
+<span class="sourceLineNo">757</span> for (Object o : c) {<a name="line.757"></a>
+<span class="sourceLineNo">758</span> if (o == null)<a name="line.758"></a>
+<span class="sourceLineNo">759</span> continue;<a name="line.759"></a>
+<span class="sourceLineNo">760</span> cm = getClassMetaForObject(o);<a name="line.760"></a>
+<span class="sourceLineNo">761</span> if (cm != null && cm.getPojoSwap() != null) {<a name="line.761"></a>
+<span class="sourceLineNo">762</span> PojoSwap f = cm.getPojoSwap();<a name="line.762"></a>
+<span class="sourceLineNo">763</span> o = f.swap(this, o);<a name="line.763"></a>
+<span class="sourceLineNo">764</span> cm = cm.getSerializedClassMeta();<a name="line.764"></a>
+<span class="sourceLineNo">765</span> }<a name="line.765"></a>
+<span class="sourceLineNo">766</span> if (prevC.contains(cm))<a name="line.766"></a>
+<span class="sourceLineNo">767</span> continue;<a name="line.767"></a>
+<span class="sourceLineNo">768</span> if (cm == null || ! (cm.isMap() || cm.isBean()))<a name="line.768"></a>
+<span class="sourceLineNo">769</span> return null;<a name="line.769"></a>
+<span class="sourceLineNo">770</span> if (cm.getInnerClass().isAnnotationPresent(HtmlLink.class))<a name="line.770"></a>
+<span class="sourceLineNo">771</span> return null;<a name="line.771"></a>
+<span class="sourceLineNo">772</span> if (canIgnoreValue(cm, null, o))<a name="line.772"></a>
+<span class="sourceLineNo">773</span> return null;<a name="line.773"></a>
+<span class="sourceLineNo">774</span> if (cm.isMap() && ! cm.isBeanMap()) {<a name="line.774"></a>
+<span class="sourceLineNo">775</span> Map m = (Map)o;<a name="line.775"></a>
+<span class="sourceLineNo">776</span> if (th.length != m.keySet().size())<a name="line.776"></a>
+<span class="sourceLineNo">777</span> return null;<a name="line.777"></a>
+<span class="sourceLineNo">778</span> for (Object k : m.keySet())<a name="line.778"></a>
+<span class="sourceLineNo">779</span> if (! s.contains(k.toString()))<a name="line.779"></a>
+<span class="sourceLineNo">780</span> return null;<a name="line.780"></a>
+<span class="sourceLineNo">781</span> } else {<a name="line.781"></a>
+<span class="sourceLineNo">782</span> BeanMap<?> bm = (o instanceof BeanMap ? (BeanMap)o : toBeanMap(o));<a name="line.782"></a>
+<span class="sourceLineNo">783</span> int l = 0;<a name="line.783"></a>
+<span class="sourceLineNo">784</span> for (String k : bm.keySet()) {<a name="line.784"></a>
+<span class="sourceLineNo">785</span> if (! s.contains(k))<a name="line.785"></a>
+<span class="sourceLineNo">786</span> return null;<a name="line.786"></a>
+<span class="sourceLineNo">787</span> l++;<a name="line.787"></a>
+<span class="sourceLineNo">788</span> }<a name="line.788"></a>
+<span class="sourceLineNo">789</span> if (s.size() != l)<a name="line.789"></a>
+<span class="sourceLineNo">790</span> return null;<a name="line.790"></a>
+<span class="sourceLineNo">791</span> }<a name="line.791"></a>
+<span class="sourceLineNo">792</span> }<a name="line.792"></a>
+<span class="sourceLineNo">793</span> return th;<a name="line.793"></a>
+<span class="sourceLineNo">794</span> }<a name="line.794"></a>
+<span class="sourceLineNo">795</span>}<a name="line.795"></a>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/html/annotation/Html.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/html/annotation/Html.html b/content/site/apidocs/src-html/org/apache/juneau/html/annotation/Html.html
index 0038d40..6a0cb48 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/html/annotation/Html.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/html/annotation/Html.html
@@ -106,7 +106,26 @@
<span class="sourceLineNo">098</span> * </p><a name="line.98"></a>
<span class="sourceLineNo">099</span> */<a name="line.99"></a>
<span class="sourceLineNo">100</span> String link() default "";<a name="line.100"></a>
-<span class="sourceLineNo">101</span>}<a name="line.101"></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> * Use the specified anchor text when serializing a URI.<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> * The text can contain any bean property values resolved through variables of the form <js>"{property-name}"</js>.<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * <h6 class='figure'>Example:</h6><a name="line.108"></a>
+<span class="sourceLineNo">109</span> * <p class='bcode'><a name="line.109"></a>
+<span class="sourceLineNo">110</span> * <jk>public class</jk> FileSpace {<a name="line.110"></a>
+<span class="sourceLineNo">111</span> *<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * <ja>@Html</ja>(anchorText=<js>"drive/{drive}"</js>)<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * <jk>public</jk> String getDrive() {<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * ...;<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * }<a name="line.115"></a>
+<span class="sourceLineNo">116</span> * }<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * </p><a name="line.117"></a>
+<span class="sourceLineNo">118</span> */<a name="line.118"></a>
+<span class="sourceLineNo">119</span> String anchorText() default "";<a name="line.119"></a>
+<span class="sourceLineNo">120</span>}<a name="line.120"></a>
[17/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/annotation/HookEvent.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/HookEvent.html b/content/site/apidocs/org/apache/juneau/rest/annotation/HookEvent.html
new file mode 100644
index 0000000..fa47233
--- /dev/null
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/HookEvent.html
@@ -0,0 +1,783 @@
+<!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>HookEvent (Apache Juneau (incubating) 6.3.2-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="HookEvent (Apache Juneau (incubating) 6.3.2-incubating-SNAPSHOT)";
+ }
+ }
+ catch(err) {
+ }
+//-->
+var methods = {"i0":9,"i1":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/rest/annotation/Header.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/juneau/rest/annotation/HookEvent.html" target="_top">Frames</a></li>
+<li><a href="HookEvent.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="#enum.constant.summary">Enum Constants</a> | </li>
+<li>Field | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#enum.constant.detail">Enum Constants</a> | </li>
+<li>Field | </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.rest.annotation</div>
+<h2 title="Enum HookEvent" class="title">Enum HookEvent</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/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">java.lang.Enum</a><<a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a>></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.juneau.rest.annotation.HookEvent</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/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><<a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a>></dd>
+</dl>
+<hr>
+<br>
+<pre>public enum <a href="../../../../../src-html/org/apache/juneau/rest/annotation/HookEvent.html#line.34">HookEvent</a>
+extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a><<a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a>></pre>
+<div class="block">Identifies servlet and REST call lifecycle events which cause <a href="../../../../../org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><code>@RestHook</code></a>-annotated Java methods
+ to be called.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="enum.constant.summary">
+<!-- -->
+</a>
+<h3>Enum Constant Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum Constant Summary table, listing enum constants, and an explanation">
+<caption><span>Enum Constants</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colOne" scope="col">Enum Constant and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#DESTROY">DESTROY</a></span></code>
+<div class="block">Identifies a method that gets called during servlet destroy.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#END_CALL">END_CALL</a></span></code>
+<div class="block">Identifies a method that gets called right before we exit the servlet service method.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#INIT">INIT</a></span></code>
+<div class="block">Identifies a method that gets called during servlet initialization.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#POST_CALL">POST_CALL</a></span></code>
+<div class="block">Identifies a method that gets called immediately after the <ja>@RestMethod</ja> annotated method gets called.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#POST_INIT">POST_INIT</a></span></code>
+<div class="block">Identifies a method that gets called immediately after servlet initialization.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#POST_INIT_CHILD_FIRST">POST_INIT_CHILD_FIRST</a></span></code>
+<div class="block">Identical to <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#POST_INIT"><code>POST_INIT</code></a> except the order of execution is child-resources first.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#PRE_CALL">PRE_CALL</a></span></code>
+<div class="block">Identifies a method that gets called immediately before the <ja>@RestMethod</ja> annotated method gets called.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#START_CALL">START_CALL</a></span></code>
+<div class="block">Identifies a method that should be called immediately after the <code>HttpServlet.service(HttpServletRequest, HttpServletResponse)</code>
+ method is called.</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="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="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#valueOf-java.lang.String-">valueOf</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">Returns the enum constant of this type with the specified name.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a>[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#values--">values</a></span>()</code>
+<div class="block">Returns an array containing the constants of this enum type, in
+the order they are declared.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Enum">
+<!-- -->
+</a>
+<h3>Methods inherited from class java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.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/Enum.html?is-external=true#compareTo-E-" title="class or interface in java.lang">compareTo</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.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/Enum.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/Enum.html?is-external=true#getDeclaringClass--" title="class or interface in java.lang">getDeclaringClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.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/Enum.html?is-external=true#name--" title="class or interface in java.lang">name</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true#ordinal--" title="class or interface in java.lang">ordinal</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.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/Enum.html?is-external=true#valueOf-java.lang.Class-java.lang.String-" title="class or interface in java.lang">valueOf</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#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#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#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">
+<!-- ============ ENUM CONSTANT DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="enum.constant.detail">
+<!-- -->
+</a>
+<h3>Enum Constant Detail</h3>
+<a name="START_CALL">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>START_CALL</h4>
+<pre>public static final <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/HookEvent.html#line.80">START_CALL</a></pre>
+<div class="block">Identifies a method that should be called immediately after the <code>HttpServlet.service(HttpServletRequest, HttpServletResponse)</code>
+ method is called.
+
+ <p>
+ Note that you only have access to the raw request and response objects at this point.
+
+ <p>
+ The list of valid parameter types are as follows:
+ <ul>
+ <li>Servlet request/response objects:
+ <ul>
+ <li><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http"><code>HttpServletRequest</code></a>
+ <li><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http"><code>HttpServletResponse</code></a>
+ </ul>
+ </ul>
+
+ <h6 class='figure'>Example:</h6>
+ <p class='bcode'>
+ <ja>@RestResource</ja>(...)
+ <jk>public class</jk> MyResource <jk>extends</jk> RestServletDefault {
+
+ <jc>// Add a request attribute to all incoming requests.</jc>
+ <ja>@RestHook</ja>(<jsf>START_CALL</jsf>)
+ <jk>public void</jk> onStartCall(HttpServletRequest req) {
+ req.setAttribute(<js>"foobar"</js>, <jk>new</jk> FooBar());
+ }
+ }
+ </p>
+
+ <h5 class='section'>Notes:</h5>
+ <ul class='spaced-list'>
+ <li>If the method returns any value, it is ignored.
+ <li>Multiple START_CALL methods can be defined on a class.
+ <br>START_CALL methods on parent classes are invoked before START_CALL methods on child classes.
+ <br>The order of START_CALL method invocations within a class is alphabetical, then by parameter count, then by parameter types.
+ <li>The method can throw any exception.
+ <br><a href="../../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest"><code>RestExceptions</code></a> can be thrown to cause a particular HTTP error status code.
+ <br>All other exceptions cause an HTTP 500 error status code.
+ <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.
+ <br>The method is still considered part of the parent class for ordering purposes even though it's
+ overridden by the child class.
+ </ul></div>
+</li>
+</ul>
+<a name="PRE_CALL">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>PRE_CALL</h4>
+<pre>public static final <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/HookEvent.html#line.191">PRE_CALL</a></pre>
+<div class="block">Identifies a method that gets called immediately before the <ja>@RestMethod</ja> annotated method gets called.
+
+ <p>
+ At this point, the <a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest"><code>RestRequest</code></a> object has been fully initialized, and all <a href="../../../../../org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest"><code>RestGuard</code></a> and
+ <a href="../../../../../org/apache/juneau/rest/RestMatcher.html" title="class in org.apache.juneau.rest"><code>RestMatcher</code></a> objects have been called.
+
+ <p>
+ The list of valid parameter types are as follows:
+ <ul>
+ <li>Servlet request/response objects:
+ <ul>
+ <li><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http"><code>HttpServletRequest</code></a>
+ <li><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http"><code>HttpServletResponse</code></a>
+ </ul>
+ <li>Extended request/response objects:
+ <ul>
+ <li><a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest"><code>RestRequest</code></a>
+ <li><a href="../../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest"><code>RestResponse</code></a>
+ </ul>
+ <li>Header objects:
+ <ul>
+ <li><a href="../../../../../org/apache/juneau/http/Accept.html" title="class in org.apache.juneau.http"><code>Accept</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/AcceptCharset.html" title="class in org.apache.juneau.http"><code>AcceptCharset</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/AcceptEncoding.html" title="class in org.apache.juneau.http"><code>AcceptEncoding</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/AcceptLanguage.html" title="class in org.apache.juneau.http"><code>AcceptLanguage</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/Authorization.html" title="class in org.apache.juneau.http"><code>Authorization</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/CacheControl.html" title="class in org.apache.juneau.http"><code>CacheControl</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/Connection.html" title="class in org.apache.juneau.http"><code>Connection</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/ContentLength.html" title="class in org.apache.juneau.http"><code>ContentLength</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/ContentType.html" title="class in org.apache.juneau.http"><code>ContentType</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/Date.html" title="class in org.apache.juneau.http"><code>Date</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/Expect.html" title="class in org.apache.juneau.http"><code>Expect</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/From.html" title="class in org.apache.juneau.http"><code>From</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/Host.html" title="class in org.apache.juneau.http"><code>Host</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/IfMatch.html" title="class in org.apache.juneau.http"><code>IfMatch</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/IfModifiedSince.html" title="class in org.apache.juneau.http"><code>IfModifiedSince</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/IfNoneMatch.html" title="class in org.apache.juneau.http"><code>IfNoneMatch</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/IfRange.html" title="class in org.apache.juneau.http"><code>IfRange</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/IfUnmodifiedSince.html" title="class in org.apache.juneau.http"><code>IfUnmodifiedSince</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/MaxForwards.html" title="class in org.apache.juneau.http"><code>MaxForwards</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/Pragma.html" title="class in org.apache.juneau.http"><code>Pragma</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/ProxyAuthorization.html" title="class in org.apache.juneau.http"><code>ProxyAuthorization</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/Range.html" title="class in org.apache.juneau.http"><code>Range</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/Referer.html" title="class in org.apache.juneau.http"><code>Referer</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/TE.html" title="class in org.apache.juneau.http"><code>TE</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/UserAgent.html" title="class in org.apache.juneau.http"><code>UserAgent</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/Upgrade.html" title="class in org.apache.juneau.http"><code>Upgrade</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/Via.html" title="class in org.apache.juneau.http"><code>Via</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/Warning.html" title="class in org.apache.juneau.http"><code>Warning</code></a>
+ <li><a href="http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util"><code>TimeZone</code></a>
+ </ul>
+ <li>Other objects:
+ <ul>
+ <li><a href="http://docs.oracle.com/javase/7/docs/api/java/util/ResourceBundle.html?is-external=true" title="class or interface in java.util"><code>ResourceBundle</code></a>
+ <li><a href="../../../../../org/apache/juneau/utils/MessageBundle.html" title="class in org.apache.juneau.utils"><code>MessageBundle</code></a>
+ <li><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>
+ <li><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletInputStream.html?is-external=true" title="class or interface in javax.servlet"><code>ServletInputStream</code></a>
+ <li><a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io"><code>Reader</code></a>
+ <li><a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io"><code>OutputStream</code></a>
+ <li><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletOutputStream.html?is-external=true" title="class or interface in javax.servlet"><code>ServletOutputStream</code></a>
+ <li><a href="http://docs.oracle.com/javase/7/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io"><code>Writer</code></a>
+ <li><a href="../../../../../org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest"><code>RequestHeaders</code></a>
+ <li><a href="../../../../../org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest"><code>RequestQuery</code></a>
+ <li><a href="../../../../../org/apache/juneau/rest/RequestFormData.html" title="class in org.apache.juneau.rest"><code>RequestFormData</code></a>
+ <li><a href="../../../../../org/apache/juneau/http/HttpMethod.html" title="enum in org.apache.juneau.http"><code>HttpMethod</code></a>
+ <li><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>
+ <li><a href="../../../../../org/apache/juneau/internal/JuneauLogger.html" title="class in org.apache.juneau.internal"><code>JuneauLogger</code></a>
+ <li><a href="../../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest"><code>RestContext</code></a>
+ <li><a href="../../../../../org/apache/juneau/parser/Parser.html" title="class in org.apache.juneau.parser"><code>Parser</code></a>
+ <li><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util"><code>Locale</code></a>
+ <li><a href="../../../../../org/apache/juneau/dto/swagger/Swagger.html" title="class in org.apache.juneau.dto.swagger"><code>Swagger</code></a>
+ <li><a href="../../../../../org/apache/juneau/rest/RequestPathMatch.html" title="class in org.apache.juneau.rest"><code>RequestPathMatch</code></a>
+ <li><a href="../../../../../org/apache/juneau/rest/RequestBody.html" title="class in org.apache.juneau.rest"><code>RequestBody</code></a>
+ <li><a href="../../../../../org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini"><code>ConfigFile</code></a>
+ <li><a href="../../../../../org/apache/juneau/UriContext.html" title="class in org.apache.juneau"><code>UriContext</code></a>
+ <li><a href="../../../../../org/apache/juneau/UriResolver.html" title="class in org.apache.juneau"><code>UriResolver</code></a>
+ </ul>
+ </ul>
+
+ <h6 class='figure'>Example:</h6>
+ <p class='bcode'>
+ <ja>@RestResource</ja>(...)
+ <jk>public class</jk> MyResource <jk>extends</jk> RestServletDefault {
+
+ <jc>// Log the incoming request.</jc>
+ <ja>@RestHook</ja>(<jsf>PRE_CALL</jsf>)
+ <jk>public void</jk> onPreCall(Accept accept, Logger logger) {
+ logger.fine(<js>"Accept {0} header found."</js>, accept);
+ }
+ }
+ </p>
+
+ <h5 class='section'>Notes:</h5>
+ <ul class='spaced-list'>
+ <li>If the method returns any value, it is ignored.
+ <li>Multiple PRE_CALL methods can be defined on a class.
+ <br>PRE_CALL methods on parent classes are invoked before PRE_CALL methods on child classes.
+ <br>The order of PRE_CALL method invocations within a class is alphabetical, then by parameter count, then by parameter types.
+ <li>The method can throw any exception.
+ <br><a href="../../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest"><code>RestExceptions</code></a> can be thrown to cause a particular HTTP error status code.
+ <br>All other exceptions cause an HTTP 500 error status code.
+ <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.
+ <br>The method is still considered part of the parent class for ordering purposes even though it's
+ overridden by the child class.
+ <li>It's advisable not to mess around with the HTTP body itself since you may end up consuming the body
+ before the actual REST method has a chance to use it.
+ </ul></div>
+</li>
+</ul>
+<a name="POST_CALL">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>POST_CALL</h4>
+<pre>public static final <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/HookEvent.html#line.228">POST_CALL</a></pre>
+<div class="block">Identifies a method that gets called immediately after the <ja>@RestMethod</ja> annotated method gets called.
+
+ <p>
+ At this point, the output object returned by the method call has been set on the response, but
+ <a href="../../../../../org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest"><code>RestConverters</code></a> have not yet been executed and the response has not yet been written.
+
+ <p>
+ The list of valid parameter types are the same as <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#PRE_CALL"><code>PRE_CALL</code></a>.
+
+ <h6 class='figure'>Example:</h6>
+ <p class='bcode'>
+ <ja>@RestResource</ja>(...)
+ <jk>public class</jk> MyResource <jk>extends</jk> RestServletDefault {
+
+ <jc>// Log the result of the request.</jc>
+ <ja>@RestHook</ja>(<jsf>POST_CALL</jsf>)
+ <jk>public void</jk> onPostCall(RestResponse res, Logger logger) {
+ logger.fine(<js>Output {0} was set on the response."</js>, res.getOutput());
+ }
+ }
+ </p>
+
+ <h5 class='section'>Notes:</h5>
+ <ul class='spaced-list'>
+ <li>If the method returns any value, it is ignored.
+ <li>Multiple POST_CALL methods can be defined on a class.
+ <br>POST_CALL methods on parent classes are invoked before POST_CALL methods on child classes.
+ <br>The order of POST_CALL method invocations within a class is alphabetical, then by parameter count, then by parameter types.
+ <li>The method can throw any exception, although at this point it is too late to set an HTTP error status code.
+ <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.
+ <br>The method is still considered part of the parent class for ordering purposes even though it's
+ overridden by the child class.
+ </ul></div>
+</li>
+</ul>
+<a name="END_CALL">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>END_CALL</h4>
+<pre>public static final <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/HookEvent.html#line.283">END_CALL</a></pre>
+<div class="block">Identifies a method that gets called right before we exit the servlet service method.
+
+ <p>
+ At this point, the output has been written and flushed.
+
+ <p>
+ The list of valid parameter types are as follows:
+ <ul>
+ <li>Servlet request/response objects:
+ <ul>
+ <li><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http"><code>HttpServletRequest</code></a>
+ <li><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http"><code>HttpServletResponse</code></a>
+ </ul>
+ </ul>
+
+ <p>
+ The following attributes are set on the <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http"><code>HttpServletRequest</code></a> object that can be useful for logging purposes:
+ <ul>
+ <li><js>"Exception"</js> - Any exceptions thrown during the request.
+ <li><js>"ExecTime"</js> - Execution time of the request.
+ </ul>
+
+ <h6 class='figure'>Example:</h6>
+ <p class='bcode'>
+ <ja>@RestResource</ja>(...)
+ <jk>public class</jk> MyResource <jk>extends</jk> RestServletDefault {
+
+ <jc>// Log the time it took to execute the request.</jc>
+ <ja>@RestHook</ja>(<jsf>END_CALL</jsf>)
+ <jk>public void</jk> onEndCall(RestRequest req, Logger logger) {
+ Exception e = (Exception)req.getAttribute(<js>"Exception"</js>);
+ Long execTime = (Long)req.getAttribute(<js>"ExecTime"</js>);
+ <jk>if</jk> (e != <jk>null</jk>)
+ logger.warn(e, <js>"Request failed in {0}ms."</js>, execTime);
+ <jk>else</jk>
+ logger.fine(<js>"Request finished in {0}ms."</js>, execTime);
+ }
+ }
+ </p>
+
+ <h5 class='section'>Notes:</h5>
+ <ul class='spaced-list'>
+ <li>If the method returns any value, it is ignored.
+ <li>Multiple END_CALL methods can be defined on a class.
+ <br>END_CALL methods on parent classes are invoked before END_CALL methods on child classes.
+ <br>The order of END_CALL method invocations within a class is alphabetical, then by parameter count, then by parameter types.
+ <li>The method can throw any exception, although at this point it is too late to set an HTTP error status code.
+ <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.
+ <br>The method is still considered part of the parent class for ordering purposes even though it's
+ overridden by the child class.
+ </ul></div>
+</li>
+</ul>
+<a name="INIT">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>INIT</h4>
+<pre>public static final <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/HookEvent.html#line.328">INIT</a></pre>
+<div class="block">Identifies a method that gets called during servlet initialization.
+
+ <p>
+ This method is called from within the <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true#init-javax.servlet.ServletConfig-" title="class or interface in javax.servlet"><code>Servlet.init(ServletConfig)</code></a> method after the <a href="../../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest"><code>RestConfig</code></a>
+ object has been created and initialized with the annotations defined on the class, but before the
+ <a href="../../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest"><code>RestContext</code></a> object has been created.
+
+ <p>
+ The only valid parameter type for this method is <a href="../../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest"><code>RestConfig</code></a> which can be used to configure the servlet.
+
+ <p>
+ An example of this is the <code>PetStoreResource</code> class that uses an init method to perform initialization
+ of an internal data structure.
+
+ <h6 class='figure'>Example:</h6>
+ <p class='bcode'>
+ <ja>@RestResource</ja>(...)
+ <jk>public class</jk> PetStoreResource <jk>extends</jk> ResourceJena {
+
+ <jc>// Our database.</jc>
+ <jk>private</jk> Map<Integer,Pet> <jf>petDB</jf>;
+
+ <ja>@RestHook</ja>(<jsf>INIT</jsf>)
+ <jk>public void</jk> onInit(RestConfig config) <jk>throws</jk> Exception {
+ <jc>// Load our database from a local JSON file.</jc>
+ <jf>petDB</jf> = JsonParser.<jsf>DEFAULT</jsf>.parse(getClass().getResourceAsStream(<js>"PetStore.json"</js>), LinkedHashMap.<jk>class</jk>, Integer.<jk>class</jk>, Pet.<jk>class</jk>);
+ }
+ }
+ </p>
+
+ <h5 class='section'>Notes:</h5>
+ <ul class='spaced-list'>
+ <li>If the method returns any value, it is ignored.
+ <li>Multiple INIT methods can be defined on a class.
+ <br>INIT methods on parent classes are invoked before INIT methods on child classes.
+ <br>The order of INIT method invocations within a class is alphabetical, then by parameter count, then by parameter types.
+ <li>The method can throw any exception causing initialization of the servlet to fail.
+ <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.
+ <br>The method is still considered part of the parent class for ordering purposes even though it's
+ overridden by the child class.
+ </ul></div>
+</li>
+</ul>
+<a name="POST_INIT">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>POST_INIT</h4>
+<pre>public static final <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/HookEvent.html#line.353">POST_INIT</a></pre>
+<div class="block">Identifies a method that gets called immediately after servlet initialization.
+
+ <p>
+ This method is called from within the <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true#init-javax.servlet.ServletConfig-" title="class or interface in javax.servlet"><code>Servlet.init(ServletConfig)</code></a> method after the <a href="../../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest"><code>RestContext</code></a>
+ object has been created.
+
+ <p>
+ The only valid parameter type for this method is <a href="../../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest"><code>RestContext</code></a> which can be used to retrieve information
+ about the servlet.
+
+ <h5 class='section'>Notes:</h5>
+ <ul class='spaced-list'>
+ <li>If the method returns any value, it is ignored.
+ <li>Multiple POST_INIT methods can be defined on a class.
+ <br>POST_INIT methods on parent classes are invoked before POST_INIT methods on child classes.
+ <br>The order of POST_INIT method invocations within a class is alphabetical, then by parameter count, then by parameter types.
+ <li>The method can throw any exception causing initialization of the servlet to fail.
+ <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.
+ <br>The method is still considered part of the parent class for ordering purposes even though it's
+ overridden by the child class.
+ </ul></div>
+</li>
+</ul>
+<a name="POST_INIT_CHILD_FIRST">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>POST_INIT_CHILD_FIRST</h4>
+<pre>public static final <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/HookEvent.html#line.378">POST_INIT_CHILD_FIRST</a></pre>
+<div class="block">Identical to <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#POST_INIT"><code>POST_INIT</code></a> except the order of execution is child-resources first.
+
+ <p>
+ Use this annotation if you need to perform any kind of initialization on child resources before the parent resource.
+
+ <p>
+ This method is called from within the <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true#init-javax.servlet.ServletConfig-" title="class or interface in javax.servlet"><code>Servlet.init(ServletConfig)</code></a> method after the <a href="../../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest"><code>RestContext</code></a>
+ object has been created and after the <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#POST_INIT"><code>POST_INIT</code></a> methods have been called.
+
+ <p>
+ The only valid parameter type for this method is <a href="../../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest"><code>RestContext</code></a> which can be used to retrieve information
+ about the servlet.
+
+ <h5 class='section'>Notes:</h5>
+ <ul class='spaced-list'>
+ <li>If the method returns any value, it is ignored.
+ <li>Multiple POST_INIT_CHILD_FIRST methods can be defined on a class.
+ <br>POST_INIT_CHILD_FIRST methods on parent classes are invoked before POST_INIT_CHILD_FIRST methods on child classes.
+ <br>The order of POST_INIT_CHILD_FIRST method invocations within a class is alphabetical, then by parameter count, then by parameter types.
+ <li>The method can throw any exception causing initialization of the servlet to fail.
+ </ul></div>
+</li>
+</ul>
+<a name="DESTROY">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DESTROY</h4>
+<pre>public static final <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/HookEvent.html#line.418">DESTROY</a></pre>
+<div class="block">Identifies a method that gets called during servlet destroy.
+
+ <p>
+ This method is called from within the <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>.
+
+ <p>
+ The only valid parameter type for this method is <a href="../../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest"><code>RestContext</code></a>, although typically no arguments will
+ be specified.
+
+ <h6 class='figure'>Example:</h6>
+ <p class='bcode'>
+ <ja>@RestResource</ja>(...)
+ <jk>public class</jk> PetStoreResource <jk>extends</jk> ResourceJena {
+
+ <jc>// Our database.</jc>
+ <jk>private</jk> Map<Integer,Pet> <jf>petDB</jf>;
+
+ <ja>@RestHook</ja>(<jsf>DESTROY</jsf>)
+ <jk>public void</jk> onDestroy() {
+ <jf>petDB</jf> = <jk>null</jk>;
+ }
+ }
+ </p>
+
+ <h5 class='section'>Notes:</h5>
+ <ul class='spaced-list'>
+ <li>If the method returns any value, it is ignored.
+ <li>Multiple DESTROY methods can be defined on a class.
+ <br>DESTROY methods on child classes are invoked before DESTROY methods on parent classes.
+ <br>The order of DESTROY method invocations within a class is alphabetical, then by parameter count, then by parameter types.
+ <li>In general, destroy methods should not throw any exceptions, although if any are thrown, the stack trace will be
+ printed to <code>System.err</code>.
+ <li>Note that if you override a parent method, you probably need to call <code><jk>super</jk>.parentMethod(...)</code>.
+ <br>The method is still considered part of the parent class for ordering purposes even though it's
+ overridden by the child class.
+ </ul></div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!-- -->
+</a>
+<h3>Method Detail</h3>
+<a name="values--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>values</h4>
+<pre>public static <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a>[] <a href="../../../../../src-html/org/apache/juneau/rest/annotation/HookEvent.html#line.34">values</a>()</pre>
+<div class="block">Returns an array containing the constants of this enum type, in
+the order they are declared. This method may be used to iterate
+over the constants as follows:
+<pre>
+for (HookEvent c : HookEvent.values())
+ System.out.println(c);
+</pre></div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>an array containing the constants of this enum type, in the order they are declared</dd>
+</dl>
+</li>
+</ul>
+<a name="valueOf-java.lang.String-">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>valueOf</h4>
+<pre>public static <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/HookEvent.html#line.34">valueOf</a>(<a href="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 enum constant of this type with the specified name.
+The string must match <i>exactly</i> an identifier used to declare an
+enum constant in this type. (Extraneous whitespace characters are
+not permitted.)</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - the name of the enum constant to be returned.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the enum constant with the specified name</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if this enum type has no constant with the specified name</dd>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if the argument is null</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/rest/annotation/Header.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/juneau/rest/annotation/HookEvent.html" target="_top">Frames</a></li>
+<li><a href="HookEvent.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="#enum.constant.summary">Enum Constants</a> | </li>
+<li>Field | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#enum.constant.detail">Enum Constants</a> | </li>
+<li>Field | </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/84931d4d/content/site/apidocs/org/apache/juneau/rest/annotation/HtmlDoc.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/HtmlDoc.html b/content/site/apidocs/org/apache/juneau/rest/annotation/HtmlDoc.html
index d2324b0..7780b9e 100644
--- a/content/site/apidocs/org/apache/juneau/rest/annotation/HtmlDoc.html
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/HtmlDoc.html
@@ -42,7 +42,7 @@
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../../org/apache/juneau/rest/annotation/Header.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/juneau/rest/annotation/Inherit.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
@@ -817,7 +817,7 @@
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../../org/apache/juneau/rest/annotation/Header.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/juneau/rest/annotation/Inherit.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/annotation/Response.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/Response.html b/content/site/apidocs/org/apache/juneau/rest/annotation/Response.html
index 3574059..a64ddf7 100644
--- a/content/site/apidocs/org/apache/juneau/rest/annotation/Response.html
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/Response.html
@@ -43,7 +43,7 @@
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/juneau/rest/annotation/ResourceSwagger.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/juneau/rest/annotation/Response.html" target="_top">Frames</a></li>
@@ -312,7 +312,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/juneau/rest/annotation/ResourceSwagger.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/juneau/rest/annotation/Response.html" target="_top">Frames</a></li>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/annotation/RestHook.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/RestHook.html b/content/site/apidocs/org/apache/juneau/rest/annotation/RestHook.html
new file mode 100644
index 0000000..27d277f
--- /dev/null
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/RestHook.html
@@ -0,0 +1,271 @@
+<!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>RestHook (Apache Juneau (incubating) 6.3.2-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="RestHook (Apache Juneau (incubating) 6.3.2-incubating-SNAPSHOT)";
+ }
+ }
+ catch(err) {
+ }
+//-->
+</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/rest/annotation/Response.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/juneau/rest/annotation/RestHook.html" target="_top">Frames</a></li>
+<li><a href="RestHook.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>Field | </li>
+<li><a href="#annotation.type.required.element.summary">Required</a> | </li>
+<li>Optional</li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#annotation.type.element.detail">Element</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.rest.annotation</div>
+<h2 title="Annotation Type RestHook" class="title">Annotation Type RestHook</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Documented.html?is-external=true" title="class or interface in java.lang.annotation">@Documented</a>
+ <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Target.html?is-external=true" title="class or interface in java.lang.annotation">@Target</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Target.html?is-external=true#value--" title="class or interface in java.lang.annotation">value</a>=<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/ElementType.html?is-external=true#METHOD" title="class or interface in java.lang.annotation">METHOD</a>)
+ <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Retention.html?is-external=true" title="class or interface in java.lang.annotation">@Retention</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Retention.html?is-external=true#value--" title="class or interface in java.lang.annotation">value</a>=<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/RetentionPolicy.html?is-external=true#RUNTIME" title="class or interface in java.lang.annotation">RUNTIME</a>)
+ <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Inherited.html?is-external=true" title="class or interface in java.lang.annotation">@Inherited</a>
+public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestHook.html#line.80">RestHook</a></pre>
+<div class="block">Identifies Java methods on a resource/servlet class that get invoked during particular lifecycle events of
+ the servlet or REST call.
+
+ <p>
+ For example, if you want to add an initialization method to your resource:
+ <p class='bcode'>
+ <ja>@RestResource</ja>(...)
+ <jk>public class</jk> MyResource {
+
+ <jc>// Our database.</jc>
+ <jk>private</jk> Map<Integer,Object> <jf>myDatabase</jf>;
+
+ <ja>@RestHook</ja>(<jsf>INIT</jsf>)
+ <jk>public void</jk> initMyDatabase(RestConfig config) <jk>throws</jk> Exception {
+ <jf>myDatabase</jf> = <jk>new</jk> LinkedHashMap<>();
+ }
+ }
+ </p>
+
+ <p>
+ Or if you want to intercept REST calls:
+ <p class='bcode'>
+ <ja>@RestResource</ja>(...)
+ <jk>public class</jk> MyResource {
+
+ <jc>// Add a request attribute to all incoming requests.</jc>
+ <ja>@RestHook</ja>(<jsf>PRE_CALL</jsf>)
+ <jk>public void</jk> onPreCall(RestRequest req) {
+ req.setAttribute(<js>"foo"</js>, <js>"bar"</js>);
+ }
+ }
+ </p>
+
+ <p>
+ The hook events can be broken down into two categories:
+ <ul class='spaced-list'>
+ <li>Resource lifecycle events:
+ <ul>
+ <li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#INIT"><code>INIT</code></a> - Right before initialization.
+ <li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#POST_INIT"><code>POST_INIT</code></a> - Right after initialization.
+ <li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#POST_INIT_CHILD_FIRST"><code>POST_INIT_CHILD_FIRST</code></a> - Right after initialization, but run child methods first.
+ <li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#DESTROY"><code>DESTROY</code></a> - Right before servlet destroy.
+ </ul>
+ <li>REST call lifecycle events:
+ <ul>
+ <li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#START_CALL"><code>START_CALL</code></a> - At the beginning of a REST call.
+ <li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#PRE_CALL"><code>PRE_CALL</code></a> - Right before the <ja>@RestMethod</ja> method is invoked.
+ <li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#POST_CALL"><code>POST_CALL</code></a> - Right after the <ja>@RestMethod</ja> method is invoked.
+ <li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html#END_CALL"><code>END_CALL</code></a> - At the end of the REST call after the response has been flushed.
+ </ul>
+ </ul>
+
+ <p>
+ See the <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation"><code>HookEvent</code></a> class for information about individual event types.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== ANNOTATION TYPE REQUIRED MEMBER SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="annotation.type.required.element.summary">
+<!-- -->
+</a>
+<h3>Required Element Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Required Element Summary table, listing required elements, and an explanation">
+<caption><span>Required Elements</span><span class="tabEnd"> </span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Required Element and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/annotation/RestHook.html#value--">value</a></span></code>
+<div class="block">The lifecycle event.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="annotation.type.element.detail">
+<!-- -->
+</a>
+<h3>Element Detail</h3>
+<a name="value--">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>value</h4>
+<pre>public abstract <a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a> <a href="../../../../../src-html/org/apache/juneau/rest/annotation/RestHook.html#line.85">value</a></pre>
+<div class="block">The lifecycle event.</div>
+</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/rest/annotation/Response.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/juneau/rest/annotation/RestHook.html" target="_top">Frames</a></li>
+<li><a href="RestHook.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>Field | </li>
+<li><a href="#annotation.type.required.element.summary">Required</a> | </li>
+<li>Optional</li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li>Field | </li>
+<li><a href="#annotation.type.element.detail">Element</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/84931d4d/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 3560208..ab1860b 100644
--- a/content/site/apidocs/org/apache/juneau/rest/annotation/RestMethod.html
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/RestMethod.html
@@ -42,7 +42,7 @@
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../../org/apache/juneau/rest/annotation/Response.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
@@ -1223,7 +1223,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
</div>
<div class="subNav">
<ul class="navList">
-<li><a href="../../../../../org/apache/juneau/rest/annotation/Response.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/annotation/package-frame.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/package-frame.html b/content/site/apidocs/org/apache/juneau/rest/annotation/package-frame.html
index 472d1ba..040b5fa 100644
--- a/content/site/apidocs/org/apache/juneau/rest/annotation/package-frame.html
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/package-frame.html
@@ -13,6 +13,7 @@
<div class="indexContainer">
<h2 title="Enums">Enums</h2>
<ul title="Enums">
+<li><a href="HookEvent.html" title="enum in org.apache.juneau.rest.annotation" target="classFrame">HookEvent</a></li>
<li><a href="Inherit.html" title="enum in org.apache.juneau.rest.annotation" target="classFrame">Inherit</a></li>
</ul>
<h2 title="Annotation Types">Annotation Types</h2>
@@ -34,6 +35,7 @@
<li><a href="Query.html" title="annotation in org.apache.juneau.rest.annotation" target="classFrame">Query</a></li>
<li><a href="ResourceSwagger.html" title="annotation in org.apache.juneau.rest.annotation" target="classFrame">ResourceSwagger</a></li>
<li><a href="Response.html" title="annotation in org.apache.juneau.rest.annotation" target="classFrame">Response</a></li>
+<li><a href="RestHook.html" title="annotation in org.apache.juneau.rest.annotation" target="classFrame">RestHook</a></li>
<li><a href="RestMethod.html" title="annotation in org.apache.juneau.rest.annotation" target="classFrame">RestMethod</a></li>
<li><a href="RestResource.html" title="annotation in org.apache.juneau.rest.annotation" target="classFrame">RestResource</a></li>
</ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/annotation/package-summary.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/package-summary.html b/content/site/apidocs/org/apache/juneau/rest/annotation/package-summary.html
index ee2a78c..0ee879a 100644
--- a/content/site/apidocs/org/apache/juneau/rest/annotation/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/package-summary.html
@@ -86,6 +86,13 @@
</tr>
<tbody>
<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a></td>
+<td class="colLast">
+<div class="block">Identifies servlet and REST call lifecycle events which cause <a href="../../../../../org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><code>@RestHook</code></a>-annotated Java methods
+ to be called.</div>
+</td>
+</tr>
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/juneau/rest/annotation/Inherit.html" title="enum in org.apache.juneau.rest.annotation">Inherit</a></td>
<td class="colLast">
<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>
@@ -218,12 +225,19 @@
</td>
</tr>
<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation">RestHook</a></td>
+<td class="colLast">
+<div class="block">Identifies Java methods on a resource/servlet class that get invoked during particular lifecycle events of
+ the servlet or REST call.</div>
+</td>
+</tr>
+<tr class="altColor">
<td class="colFirst"><a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation">RestMethod</a></td>
<td class="colLast">
<div class="block">Identifies a REST Java method on a <a href="../../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> implementation class.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html" title="annotation in org.apache.juneau.rest.annotation">RestResource</a></td>
<td class="colLast">
<div class="block">Used to denote that a class is a REST resource and to associate metadata on it.</div>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/annotation/package-tree.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/package-tree.html b/content/site/apidocs/org/apache/juneau/rest/annotation/package-tree.html
index bb129dd..edc2875 100644
--- a/content/site/apidocs/org/apache/juneau/rest/annotation/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/package-tree.html
@@ -80,6 +80,7 @@
<ul>
<li type="circle">org.apache.juneau.rest.annotation.<a href="../../../../../org/apache/juneau/rest/annotation/RestResource.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">RestResource</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
<li type="circle">org.apache.juneau.rest.annotation.<a href="../../../../../org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">RestMethod</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.juneau.rest.annotation.<a href="../../../../../org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">RestHook</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
<li type="circle">org.apache.juneau.rest.annotation.<a href="../../../../../org/apache/juneau/rest/annotation/Response.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Response</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
<li type="circle">org.apache.juneau.rest.annotation.<a href="../../../../../org/apache/juneau/rest/annotation/ResourceSwagger.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">ResourceSwagger</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
<li type="circle">org.apache.juneau.rest.annotation.<a href="../../../../../org/apache/juneau/rest/annotation/Query.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Query</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
@@ -105,6 +106,7 @@
<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, 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">org.apache.juneau.rest.annotation.<a href="../../../../../org/apache/juneau/rest/annotation/Inherit.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">Inherit</span></a></li>
+<li type="circle">org.apache.juneau.rest.annotation.<a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">HookEvent</span></a></li>
</ul>
</li>
</ul>
[24/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/internal/ClassUtils.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/internal/ClassUtils.html b/content/site/apidocs/org/apache/juneau/internal/ClassUtils.html
index 2950f8b..eec364a 100644
--- a/content/site/apidocs/org/apache/juneau/internal/ClassUtils.html
+++ b/content/site/apidocs/org/apache/juneau/internal/ClassUtils.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":9,"i27":9,"i28":9,"i29":9,"i30":9,"i31":9,"i32":9,"i33":9,"i34":9,"i35":9,"i36":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":9,"i27":9,"i28":9,"i29":9,"i30":9,"i31":9,"i32":9,"i33":9,"i34":9,"i35":9,"i36":9,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -174,27 +174,34 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#assertArgsOfType-java.lang.reflect.Method-java.lang.Class...-">assertArgsOfType</a></span>(<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> m,
+ <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><?>... args)</code>
+<div class="block">Throws an <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang"><code>IllegalArgumentException</code></a> if the parameters on the method are not in the specified list provided.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
<td class="colFirst"><code>static <T> <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Constructor.html?is-external=true" title="class or interface in java.lang.reflect">Constructor</a><T></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#findNoArgConstructor-java.lang.Class-org.apache.juneau.Visibility-">findNoArgConstructor</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><T> c,
<a href="../../../../org/apache/juneau/Visibility.html" title="enum in org.apache.juneau">Visibility</a> v)</code>
<div class="block">Locates the no-arg constructor for the specified class.</div>
</td>
</tr>
-<tr id="i1" class="rowColor">
+<tr id="i2" class="altColor">
<td class="colFirst"><code>static <T> <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Constructor.html?is-external=true" title="class or interface in java.lang.reflect">Constructor</a><T></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#findPublicConstructor-java.lang.Class-java.lang.Class...-">findPublicConstructor</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><T> c,
<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><?>... parameterTypes)</code>
<div class="block">Finds a public constructor with the specified parameters without throwing an exception.</div>
</td>
</tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
<td class="colFirst"><code>static <T> <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Constructor.html?is-external=true" title="class or interface in java.lang.reflect">Constructor</a><T></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#findPublicConstructor-java.lang.Class-java.lang.Object...-">findPublicConstructor</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><T> c,
<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>
<div class="block">Finds the public constructor that can take in the specified arguments.</div>
</td>
</tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
<td class="colFirst"><code>static <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></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#findPublicMethod-java.lang.Class-java.lang.String-java.lang.Class-java.lang.Class...-">findPublicMethod</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,
<a href="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,
@@ -203,34 +210,34 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<div class="block">Finds a public method with the specified parameters.</div>
</td>
</tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a><<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html?is-external=true" title="class or interface in java.lang.reflect">Field</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#getAllFields-java.lang.Class-boolean-">getAllFields</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,
boolean parentFirst)</code>
<div class="block">Returns all the fields in the specified class and all parent classes.</div>
</td>
</tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</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>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#getAllMethods-java.lang.Class-boolean-">getAllMethods</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,
boolean parentFirst)</code>
<div class="block">Returns all the methods in the specified class and all parent classes.</div>
</td>
</tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
<td class="colFirst"><code>static <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/internal/ClassUtils.html#getClasses-java.lang.Object...-">getClasses</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>... args)</code>
<div class="block">Returns the class types for the specified arguments.</div>
</td>
</tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
<td class="colFirst"><code>static <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/internal/ClassUtils.html#getClassFromReadableName-java.lang.ClassLoader-java.lang.String-">getClassFromReadableName</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a> cl,
<a href="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">Converts the string generated by <a href="../../../../org/apache/juneau/internal/ClassUtils.html#getReadableClassName-java.lang.Class-"><code>getReadableClassName(Class)</code></a> back into 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"><code>Class</code></a>.</div>
</td>
</tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
<td class="colFirst"><code>static <T extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>><br>T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#getMethodAnnotation-java.lang.Class-java.lang.Class-java.lang.reflect.Method-">getMethodAnnotation</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><T> 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,
@@ -238,32 +245,32 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<div class="block">Returns the specified annotation on the specified method.</div>
</td>
</tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
<td class="colFirst"><code>static <T extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>><br>T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#getMethodAnnotation-java.lang.Class-java.lang.reflect.Method-">getMethodAnnotation</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><T> 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> m)</code>
<div class="block">Returns the specified annotation on the specified method.</div>
</td>
</tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../org/apache/juneau/internal/ClassUtils.MethodInfo.html" title="class in org.apache.juneau.internal">ClassUtils.MethodInfo</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#getMethodInfo-java.util.Collection-">getMethodInfo</a></span>(<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="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>> m)</code>
<div class="block">Returns <a href="../../../../org/apache/juneau/internal/ClassUtils.MethodInfo.html" title="class in org.apache.juneau.internal"><code>ClassUtils.MethodInfo</code></a> beans that describe the specified methods.</div>
</td>
</tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
<td class="colFirst"><code>static <a href="../../../../org/apache/juneau/internal/ClassUtils.MethodInfo.html" title="class in org.apache.juneau.internal">ClassUtils.MethodInfo</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#getMethodInfo-java.lang.reflect.Method-">getMethodInfo</a></span>(<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> m)</code>
<div class="block">Returns a <a href="../../../../org/apache/juneau/internal/ClassUtils.MethodInfo.html" title="class in org.apache.juneau.internal"><code>ClassUtils.MethodInfo</code></a> bean that describes the specified method.</div>
</td>
</tr>
-<tr id="i12" class="altColor">
+<tr id="i13" 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/internal/ClassUtils.html#getMethodSignature-java.lang.reflect.Method-">getMethodSignature</a></span>(<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> m)</code>
<div class="block">Returns the signature of the specified method.</div>
</td>
</tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</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><?>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#getParentClasses-java.lang.Class-boolean-boolean-">getParentClasses</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,
boolean parentFirst,
@@ -271,86 +278,86 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<div class="block">Returns a list of all the parent classes of the specified class including the class itself.</div>
</td>
</tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
<td class="colFirst"><code>static <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></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#getPrimitiveDefault-java.lang.Class-">getPrimitiveDefault</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><?> primitiveClass)</code>
<div class="block">Returns the default value for the specified primitive class.</div>
</td>
</tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
<td class="colFirst"><code>static <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/internal/ClassUtils.html#getPrimitiveForWrapper-java.lang.Class-">getPrimitiveForWrapper</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">If the specified class is a primitive wrapper (e.g.</div>
</td>
</tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
<td class="colFirst"><code>static <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/internal/ClassUtils.html#getPrimitiveWrapper-java.lang.Class-">getPrimitiveWrapper</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">If the specified class is a primitive (e.g.</div>
</td>
</tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" 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/ClassUtils.html#getReadableClassName-java.lang.Class-">getReadableClassName</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">Shortcut for calling <code><jsm>getReadableClassName</jsm>(c.getName())</code></div>
</td>
</tr>
-<tr id="i18" class="altColor">
+<tr id="i19" 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/internal/ClassUtils.html#getReadableClassName-java.lang.String-">getReadableClassName</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> className)</code>
<div class="block">Converts the specified class name to a readable form when class name is a special construct like <js>"[[Z"</js>.</div>
</td>
</tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" 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/ClassUtils.html#getReadableClassNameForObject-java.lang.Object-">getReadableClassNameForObject</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> o)</code>
<div class="block">Shortcut for calling <code><jsm>getReadableClassName</jsm>(c.getClass().getName())</code></div>
</td>
</tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#getReadableClassNames-java.lang.Object:A-">getReadableClassNames</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>[] o)</code>
<div class="block">Given the specified list of objects, return readable names for the class types of the objects.</div>
</td>
</tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
<td class="colFirst"><code>static <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/internal/ClassUtils.html#getWrapperIfPrimitive-java.lang.Class-">getWrapperIfPrimitive</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">If the specified class is a primitive (e.g.</div>
</td>
</tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isAbstract-java.lang.Class-">isAbstract</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">Returns <jk>true</jk> if the specified class is abstract.</div>
</td>
</tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isNotDeprecated-java.lang.Class-">isNotDeprecated</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">Returns <jk>true</jk> if the specified class has the <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang"><code>@Deprecated</code></a> annotation on it.</div>
</td>
</tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isNotDeprecated-java.lang.reflect.Constructor-">isNotDeprecated</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Constructor.html?is-external=true" title="class or interface in java.lang.reflect">Constructor</a><?> c)</code>
<div class="block">Returns <jk>true</jk> if the specified constructor has the <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang"><code>@Deprecated</code></a> annotation on it.</div>
</td>
</tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isNotDeprecated-java.lang.reflect.Method-">isNotDeprecated</a></span>(<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> m)</code>
<div class="block">Returns <jk>true</jk> if the specified method has the <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang"><code>@Deprecated</code></a> annotation on it.</div>
</td>
</tr>
-<tr id="i26" class="altColor">
+<tr id="i27" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isParentClass-java.lang.Class-java.lang.Class-">isParentClass</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><?> parent,
<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><?> child)</code>
<div class="block">Returns <jk>true</jk> if <code>parent</code> is a parent class or the same as <code>child</code>.</div>
</td>
</tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isParentClass-java.lang.Class-java.lang.Class-boolean-">isParentClass</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><?> parent,
<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><?> child,
@@ -358,44 +365,44 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<div class="block">Returns <jk>true</jk> if <code>parent</code> is a parent class of <code>child</code>.</div>
</td>
</tr>
-<tr id="i28" class="altColor">
+<tr id="i29" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isParentClass-java.lang.Class-java.lang.reflect.Type-">isParentClass</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><?> parent,
<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Type.html?is-external=true" title="class or interface in java.lang.reflect">Type</a> child)</code>
<div class="block">Returns <jk>true</jk> if <code>parent</code> is a parent class or the same as <code>child</code>.</div>
</td>
</tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isPublic-java.lang.Class-">isPublic</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">Returns <jk>true</jk> if the specified class is public.</div>
</td>
</tr>
-<tr id="i30" class="altColor">
+<tr id="i31" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isPublic-java.lang.reflect.Constructor-">isPublic</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Constructor.html?is-external=true" title="class or interface in java.lang.reflect">Constructor</a><?> c)</code>
<div class="block">Returns <jk>true</jk> if the specified constructor is public.</div>
</td>
</tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isPublic-java.lang.reflect.Method-">isPublic</a></span>(<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> m)</code>
<div class="block">Returns <jk>true</jk> if the specified method is public.</div>
</td>
</tr>
-<tr id="i32" class="altColor">
+<tr id="i33" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isStatic-java.lang.Class-">isStatic</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">Returns <jk>true</jk> if the specified class is public.</div>
</td>
</tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#isStatic-java.lang.reflect.Method-">isStatic</a></span>(<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> m)</code>
<div class="block">Returns <jk>true</jk> if the specified method is static.</div>
</td>
</tr>
-<tr id="i34" class="altColor">
+<tr id="i35" class="rowColor">
<td class="colFirst"><code>static <T> T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#newInstance-java.lang.Class-java.lang.Object-java.lang.Object...-">newInstance</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><T> c,
<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> c2,
@@ -403,7 +410,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<div class="block">Creates an instance of the specified class without throwing exceptions.</div>
</td>
</tr>
-<tr id="i35" class="rowColor">
+<tr id="i36" class="altColor">
<td class="colFirst"><code>static <T> T</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#newInstanceFromOuter-java.lang.Object-java.lang.Class-java.lang.Object-java.lang.Object...-">newInstanceFromOuter</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> outer,
<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,
@@ -412,7 +419,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<div class="block">Creates an instance of the specified class from within the context of another object.</div>
</td>
</tr>
-<tr id="i36" class="altColor">
+<tr id="i37" class="rowColor">
<td class="colFirst"><code>static <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/internal/ClassUtils.html#resolveParameterType-java.lang.Class-int-java.lang.Class-">resolveParameterType</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,
int index,
@@ -420,6 +427,30 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<div class="block">Finds the real parameter type of the specified class.</div>
</td>
</tr>
+<tr id="i38" class="altColor">
+<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html?is-external=true" title="class or interface in java.lang.reflect">Field</a>[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#sort-java.lang.reflect.Field:A-">sort</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html?is-external=true" title="class or interface in java.lang.reflect">Field</a>[] m)</code>
+<div class="block">Sorts methods in alphabetical order.</div>
+</td>
+</tr>
+<tr id="i39" class="rowColor">
+<td class="colFirst"><code>static <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>[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/ClassUtils.html#sort-java.lang.reflect.Method:A-">sort</a></span>(<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>[] m)</code>
+<div class="block">Sorts methods in alphabetical order.</div>
+</td>
+</tr>
+<tr id="i40" 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/ClassUtils.html#toString-java.lang.reflect.Field-">toString</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html?is-external=true" title="class or interface in java.lang.reflect">Field</a> f)</code>
+<div class="block">Returns a readable representation of the specified field.</div>
+</td>
+</tr>
+<tr id="i41" 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/internal/ClassUtils.html#toString-java.lang.reflect.Method-">toString</a></span>(<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> m)</code>
+<div class="block">Returns a readable representation of the specified method.</div>
+</td>
+</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -1099,9 +1130,12 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>getAllFields</h4>
-<pre>public static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a><<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html?is-external=true" title="class or interface in java.lang.reflect">Field</a>> <a href="../../../../src-html/org/apache/juneau/internal/ClassUtils.html#line.841">getAllFields</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,
+<pre>public static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a><<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html?is-external=true" title="class or interface in java.lang.reflect">Field</a>> <a href="../../../../src-html/org/apache/juneau/internal/ClassUtils.html#line.844">getAllFields</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,
boolean parentFirst)</pre>
-<div class="block">Returns all the fields in the specified class and all parent classes.</div>
+<div class="block">Returns all the fields in the specified class and all parent classes.
+
+ <p>
+ Fields are ordered in either parent-to-child, or child-to-parent order, then alphabetically.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>c</code> - The class to get all fields on.</dd>
@@ -1117,9 +1151,12 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>getAllMethods</h4>
-<pre>public static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</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>> <a href="../../../../src-html/org/apache/juneau/internal/ClassUtils.html#line.896">getAllMethods</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,
+<pre>public static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</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>> <a href="../../../../src-html/org/apache/juneau/internal/ClassUtils.html#line.902">getAllMethods</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,
boolean parentFirst)</pre>
-<div class="block">Returns all the methods in the specified class and all parent classes.</div>
+<div class="block">Returns all the methods in the specified class and all parent classes.
+
+ <p>
+ Methods are ordered in either parent-to-child, or child-to-parent order, then alphabetically.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>c</code> - The class to get all methods on.</dd>
@@ -1129,13 +1166,45 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
</dl>
</li>
</ul>
+<a name="sort-java.lang.reflect.Method:A-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sort</h4>
+<pre>public static <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>[] <a href="../../../../src-html/org/apache/juneau/internal/ClassUtils.html#line.972">sort</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>[] m)</pre>
+<div class="block">Sorts methods in alphabetical order.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>m</code> - The methods to sort.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The same array, but with elements sorted.</dd>
+</dl>
+</li>
+</ul>
+<a name="sort-java.lang.reflect.Field:A-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sort</h4>
+<pre>public static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html?is-external=true" title="class or interface in java.lang.reflect">Field</a>[] <a href="../../../../src-html/org/apache/juneau/internal/ClassUtils.html#line.991">sort</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html?is-external=true" title="class or interface in java.lang.reflect">Field</a>[] m)</pre>
+<div class="block">Sorts methods in alphabetical order.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>m</code> - The methods to sort.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The same array, but with elements sorted.</dd>
+</dl>
+</li>
+</ul>
<a name="getParentClasses-java.lang.Class-boolean-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParentClasses</h4>
-<pre>public static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</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><?>> <a href="../../../../src-html/org/apache/juneau/internal/ClassUtils.html#line.951">getParentClasses</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,
+<pre>public static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</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><?>> <a href="../../../../src-html/org/apache/juneau/internal/ClassUtils.html#line.1004">getParentClasses</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,
boolean parentFirst,
boolean includeInterfaces)</pre>
<div class="block">Returns a list of all the parent classes of the specified class including the class itself.</div>
@@ -1152,10 +1221,10 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<a name="getPrimitiveDefault-java.lang.Class-">
<!-- -->
</a>
-<ul class="blockListLast">
+<ul class="blockList">
<li class="blockList">
<h4>getPrimitiveDefault</h4>
-<pre>public static <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/internal/ClassUtils.html#line.981">getPrimitiveDefault</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><?> primitiveClass)</pre>
+<pre>public static <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/internal/ClassUtils.html#line.1034">getPrimitiveDefault</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><?> primitiveClass)</pre>
<div class="block">Returns the default value for the specified primitive class.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1165,6 +1234,63 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
</dl>
</li>
</ul>
+<a name="toString-java.lang.reflect.Method-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>toString</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/ClassUtils.html#line.1067">toString</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> m)</pre>
+<div class="block">Returns a readable representation of the specified method.
+
+ <p>
+ The format of the string is <js>"full-qualified-class.method-name(parameter-simple-class-names)"</js>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>m</code> - The method to stringify.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The stringified method.</dd>
+</dl>
+</li>
+</ul>
+<a name="toString-java.lang.reflect.Field-">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>toString</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/ClassUtils.html#line.1087">toString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html?is-external=true" title="class or interface in java.lang.reflect">Field</a> f)</pre>
+<div class="block">Returns a readable representation of the specified field.
+
+ <p>
+ The format of the string is <js>"full-qualified-class.field-name"</js>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>f</code> - The field to stringify.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The stringified field.</dd>
+</dl>
+</li>
+</ul>
+<a name="assertArgsOfType-java.lang.reflect.Method-java.lang.Class...-">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>assertArgsOfType</h4>
+<pre>public static void <a href="../../../../src-html/org/apache/juneau/internal/ClassUtils.html#line.1098">assertArgsOfType</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> m,
+ <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><?>... args)
+ throws <a href="../../../../org/apache/juneau/FormattedIllegalArgumentException.html" title="class in org.apache.juneau">FormattedIllegalArgumentException</a></pre>
+<div class="block">Throws an <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang"><code>IllegalArgumentException</code></a> if the parameters on the method are not in the specified list provided.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>m</code> - The method to test.</dd>
+<dd><code>args</code> - The valid class types (exact) for the arguments.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../../../org/apache/juneau/FormattedIllegalArgumentException.html" title="class in org.apache.juneau">FormattedIllegalArgumentException</a></code> - If any of the parameters on the method weren't in the list.</dd>
+</dl>
+</li>
+</ul>
</li>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 396a3ef..355defb 100644
--- a/content/site/apidocs/org/apache/juneau/internal/StringUtils.html
+++ b/content/site/apidocs/org/apache/juneau/internal/StringUtils.html
@@ -1408,7 +1408,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>pathStartsWith</h4>
-<pre>public static boolean <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1080">pathStartsWith</a>(<a href="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 static boolean <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1083">pathStartsWith</a>(<a href="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/String.html?is-external=true" title="class or interface in java.lang">String</a> pathPrefix)</pre>
<div class="block">Returns <jk>true</jk> if the specified path string is prefixed with the specified prefix.
@@ -1434,7 +1434,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>pathStartsWith</h4>
-<pre>public static boolean <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1095">pathStartsWith</a>(<a href="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 static boolean <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1098">pathStartsWith</a>(<a href="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/String.html?is-external=true" title="class or interface in java.lang">String</a>[] pathPrefixes)</pre>
<div class="block">Same as <a href="../../../../org/apache/juneau/internal/StringUtils.html#pathStartsWith-java.lang.String-java.lang.String-"><code>pathStartsWith(String, String)</code></a> but returns <jk>true</jk> if at least one prefix matches.</div>
<dl>
@@ -1452,7 +1452,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>replaceUnicodeSequences</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/StringUtils.html#line.1108">replaceUnicodeSequences</a>(<a href="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 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/StringUtils.html#line.1111">replaceUnicodeSequences</a>(<a href="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">Replaces <js>"\\uXXXX"</js> character sequences with their unicode characters.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1468,7 +1468,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>getField</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/StringUtils.html#line.1138">getField</a>(int fieldNum,
+<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/StringUtils.html#line.1141">getField</a>(int fieldNum,
<a href="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,
char delim)</pre>
<div class="block">Returns the specified field in a delimited string without splitting the string.
@@ -1496,7 +1496,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>getField</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/StringUtils.html#line.1151">getField</a>(int fieldNum,
+<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/StringUtils.html#line.1154">getField</a>(int fieldNum,
<a href="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,
char delim,
<a href="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)</pre>
@@ -1518,7 +1518,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>toString</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/StringUtils.html#line.1176">toString</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> o)</pre>
+<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/StringUtils.html#line.1179">toString</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> o)</pre>
<div class="block">Calls <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"><code>Object.toString()</code></a> on the specified object if it's not null.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1534,7 +1534,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>fromHexToUTF8</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/StringUtils.html#line.1186">fromHexToUTF8</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> hex)</pre>
+<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/StringUtils.html#line.1189">fromHexToUTF8</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> hex)</pre>
<div class="block">Converts a hexadecimal byte stream (e.g. "34A5BC") into a UTF-8 encoded string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1550,7 +1550,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>toHex</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/StringUtils.html#line.1203">toHex</a>(byte[] bytes)</pre>
+<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/StringUtils.html#line.1206">toHex</a>(byte[] bytes)</pre>
<div class="block">Converts a byte array into a simple hexadecimal character string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1566,7 +1566,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>fromHex</h4>
-<pre>public static byte[] <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1218">fromHex</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> hex)</pre>
+<pre>public static byte[] <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1221">fromHex</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> hex)</pre>
<div class="block">Converts a hexadecimal character string to a byte array.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1582,7 +1582,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>repeat</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/StringUtils.html#line.1233">repeat</a>(int count,
+<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/StringUtils.html#line.1236">repeat</a>(int count,
<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> pattern)</pre>
<div class="block">Creates a repeated pattern.</div>
<dl>
@@ -1600,7 +1600,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>trimStart</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/StringUtils.html#line.1246">trimStart</a>(<a href="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 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/StringUtils.html#line.1249">trimStart</a>(<a href="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">Trims whitespace characters from the beginning of the specified string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1616,7 +1616,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>trimEnd</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/StringUtils.html#line.1259">trimEnd</a>(<a href="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 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/StringUtils.html#line.1262">trimEnd</a>(<a href="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">Trims whitespace characters from the end of the specified string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1632,7 +1632,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>isOneOf</h4>
-<pre>public static boolean <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1277">isOneOf</a>(<a href="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>public static boolean <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1280">isOneOf</a>(<a href="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,
<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>... values)</pre>
<div class="block">Returns <jk>true</jk> if the specified string is one of the specified values.</div>
<dl>
@@ -1652,7 +1652,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>trimSlashes</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/StringUtils.html#line.1290">trimSlashes</a>(<a href="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 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/StringUtils.html#line.1293">trimSlashes</a>(<a href="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">Trims <js>'/'</js> characters from both the start and end of the specified string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1668,7 +1668,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>trimTrailingSlashes</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/StringUtils.html#line.1306">trimTrailingSlashes</a>(<a href="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 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/StringUtils.html#line.1309">trimTrailingSlashes</a>(<a href="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">Trims <js>'/'</js> characters from the end of the specified string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1684,7 +1684,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>trimTrailingSlashes</h4>
-<pre>public static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html?is-external=true" title="class or interface in java.lang">StringBuffer</a> <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1320">trimTrailingSlashes</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html?is-external=true" title="class or interface in java.lang">StringBuffer</a> s)</pre>
+<pre>public static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html?is-external=true" title="class or interface in java.lang">StringBuffer</a> <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1323">trimTrailingSlashes</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html?is-external=true" title="class or interface in java.lang">StringBuffer</a> s)</pre>
<div class="block">Trims <js>'/'</js> characters from the end of the specified string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1700,7 +1700,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>urlDecode</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/StringUtils.html#line.1334">urlDecode</a>(<a href="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 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/StringUtils.html#line.1337">urlDecode</a>(<a href="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">Decodes a <code>application/x-www-form-urlencoded</code> string using <code>UTF-8</code> encoding scheme.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1716,7 +1716,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>urlEncode</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/StringUtils.html#line.1356">urlEncode</a>(<a href="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 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/StringUtils.html#line.1359">urlEncode</a>(<a href="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">Encodes a <code>application/x-www-form-urlencoded</code> string using <code>UTF-8</code> encoding scheme.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1732,7 +1732,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>firstNonWhitespaceChar</h4>
-<pre>public static char <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1378">firstNonWhitespaceChar</a>(<a href="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 static char <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1381">firstNonWhitespaceChar</a>(<a href="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 the first non-whitespace character in the string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1749,7 +1749,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>charAt</h4>
-<pre>public static char <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1395">charAt</a>(<a href="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>public static char <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1398">charAt</a>(<a href="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,
int i)</pre>
<div class="block">Returns the character at the specified index in the string without throwing exceptions.</div>
<dl>
@@ -1768,7 +1768,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>isAbsoluteUri</h4>
-<pre>public static boolean <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1409">isAbsoluteUri</a>(<a href="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 static boolean <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1412">isAbsoluteUri</a>(<a href="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">Efficiently determines whether a URL is of the pattern "xxx://xxx"</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1784,7 +1784,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>isUri</h4>
-<pre>public static boolean <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1464">isUri</a>(<a href="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 static boolean <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1467">isUri</a>(<a href="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">Efficiently determines whether a URL is of the pattern "xxx:/xxx".
<p>
@@ -1806,7 +1806,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>getAuthorityUri</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/StringUtils.html#line.1510">getAuthorityUri</a>(<a href="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 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/StringUtils.html#line.1513">getAuthorityUri</a>(<a href="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">Given an absolute URI, returns just the authority portion (e.g. <js>"http://hostname:port"</js>)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1822,7 +1822,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>toURI</h4>
-<pre>public static <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/internal/StringUtils.html#line.1563">toURI</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> o)</pre>
+<pre>public static <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/internal/StringUtils.html#line.1566">toURI</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> o)</pre>
<div class="block">Converts the specified object to a URI.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1838,7 +1838,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>firstNonEmpty</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/StringUtils.html#line.1579">firstNonEmpty</a>(<a href="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 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/StringUtils.html#line.1582">firstNonEmpty</a>(<a href="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 the first non-null, non-empty string in the list.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1854,7 +1854,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockList">
<li class="blockList">
<h4>indexOf</h4>
-<pre>public static int <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1593">indexOf</a>(<a href="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>public static int <a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1596">indexOf</a>(<a href="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,
char... c)</pre>
<div class="block">Same as <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true#indexOf-int-" title="class or interface in java.lang"><code>String.indexOf(int)</code></a> except allows you to check for multiple characters.</div>
<dl>
@@ -1872,7 +1872,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
<ul class="blockListLast">
<li class="blockList">
<h4>format</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/StringUtils.html#line.1612">format</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> pattern,
+<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/StringUtils.html#line.1615">format</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> pattern,
<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">Similar to <a href="http://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html?is-external=true#format-java.lang.String-java.lang.Object...-" title="class or interface in java.text"><code>MessageFormat.format(String, Object...)</code></a> except allows you to specify POJO arguments.</div>
<dl>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 f2158d1..3a91145 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/Resource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/Resource.html
@@ -138,7 +138,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/Resource.html#line.54">Resource</a>
+public abstract class <a href="../../../../src-html/org/apache/juneau/microservice/Resource.html#line.57">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.
@@ -203,8 +203,8 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletDefault.html" tit
</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/Resource.html#init-org.apache.juneau.rest.RestConfig-">init</a></span>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> config)</code>
-<div class="block">Resource initialization method.</div>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/Resource.html#addConfigVars-org.apache.juneau.rest.RestConfig-">addConfigVars</a></span>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> config)</code>
+<div class="block">Add <code>$ARGS</code> and <code>$MF</code> variable resolvers.</div>
</td>
</tr>
</table>
@@ -220,7 +220,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletDefault.html" tit
<!-- -->
</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/juneau/rest/RestServlet.html#log-ja
va.util.logging.Level-java.lang.Throwable-java.lang.String-java.lang.Object...-">log</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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/juneau/rest/RestServlet.html#log-ja
va.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">
@@ -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.54">Resource</a>()</pre>
+<pre>public <a href="../../../../src-html/org/apache/juneau/microservice/Resource.html#line.57">Resource</a>()</pre>
</li>
</ul>
</li>
@@ -274,38 +274,21 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletDefault.html" tit
<!-- -->
</a>
<h3>Method Detail</h3>
-<a name="init-org.apache.juneau.rest.RestConfig-">
+<a name="addConfigVars-org.apache.juneau.rest.RestConfig-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
-<h4>init</h4>
-<pre>public void <a href="../../../../src-html/org/apache/juneau/microservice/Resource.html#line.57">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"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-">RestServlet</a></code></span></div>
-<div class="block">Resource initialization method.
-
- <p>
- Identical to <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true#init-javax.servlet.ServletConfig-" title="class or interface in javax.servlet"><code>Servlet.init(ServletConfig)</code></a> except the config object provides access to the external config
- file, configuration properties, and variable resolver defined for this resource.
-
- <p>
- Classes can also use <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#init--" title="class or interface in javax.servlet"><code>GenericServlet.init()</code></a> and <a href="../../../../org/apache/juneau/rest/RestServlet.html#getServletConfig--"><code>RestServlet.getServletConfig()</code></a> as well to perform
- initialization.
-
- <p>
- Note that if you override this method, you must first call <code><jk>super</jk>.init(servletConfig)</code>!
-
- <p>
- Resource classes that don't extend from <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> can add this method to their class to get access to
- the config object.</div>
+<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)
+ 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>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-">init</a></code> in class <code><a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>config</code> - The servlet configuration.</dd>
+<dd><code>config</code> - The resource config.</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> - Any exception can be thrown to signal an initialization failure.</dd>
+<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>
[13/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.html b/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.html
index b68325a..6207b05 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.html
@@ -841,175 +841,279 @@
<span class="sourceLineNo">833</span> /**<a name="line.833"></a>
<span class="sourceLineNo">834</span> * Returns all the fields in the specified class and all parent classes.<a name="line.834"></a>
<span class="sourceLineNo">835</span> *<a name="line.835"></a>
-<span class="sourceLineNo">836</span> * @param c The class to get all fields on.<a name="line.836"></a>
-<span class="sourceLineNo">837</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.837"></a>
-<span class="sourceLineNo">838</span> * @return An iterable of all fields in the specified class.<a name="line.838"></a>
-<span class="sourceLineNo">839</span> */<a name="line.839"></a>
-<span class="sourceLineNo">840</span> @SuppressWarnings("rawtypes")<a name="line.840"></a>
-<span class="sourceLineNo">841</span> public static Iterable<Field> getAllFields(final Class c, final boolean parentFirst) {<a name="line.841"></a>
-<span class="sourceLineNo">842</span> return new Iterable<Field>() {<a name="line.842"></a>
-<span class="sourceLineNo">843</span> @Override<a name="line.843"></a>
-<span class="sourceLineNo">844</span> public Iterator<Field> iterator() {<a name="line.844"></a>
-<span class="sourceLineNo">845</span> return new Iterator<Field>(){<a name="line.845"></a>
-<span class="sourceLineNo">846</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, false);<a name="line.846"></a>
-<span class="sourceLineNo">847</span> Field[] fields = classIterator.hasNext() ? classIterator.next().getDeclaredFields() : new Field[0];<a name="line.847"></a>
-<span class="sourceLineNo">848</span> int fIndex = 0;<a name="line.848"></a>
-<span class="sourceLineNo">849</span> Field next;<a name="line.849"></a>
-<span class="sourceLineNo">850</span><a name="line.850"></a>
-<span class="sourceLineNo">851</span> @Override<a name="line.851"></a>
-<span class="sourceLineNo">852</span> public boolean hasNext() {<a name="line.852"></a>
-<span class="sourceLineNo">853</span> prime();<a name="line.853"></a>
-<span class="sourceLineNo">854</span> return next != null;<a name="line.854"></a>
-<span class="sourceLineNo">855</span> }<a name="line.855"></a>
-<span class="sourceLineNo">856</span><a name="line.856"></a>
-<span class="sourceLineNo">857</span> private void prime() {<a name="line.857"></a>
-<span class="sourceLineNo">858</span> if (next == null) {<a name="line.858"></a>
-<span class="sourceLineNo">859</span> while (fIndex >= fields.length) {<a name="line.859"></a>
-<span class="sourceLineNo">860</span> if (classIterator.hasNext()) {<a name="line.860"></a>
-<span class="sourceLineNo">861</span> fields = classIterator.next().getDeclaredFields();<a name="line.861"></a>
-<span class="sourceLineNo">862</span> fIndex = 0;<a name="line.862"></a>
-<span class="sourceLineNo">863</span> } else {<a name="line.863"></a>
-<span class="sourceLineNo">864</span> fIndex = -1;<a name="line.864"></a>
-<span class="sourceLineNo">865</span> }<a name="line.865"></a>
-<span class="sourceLineNo">866</span> }<a name="line.866"></a>
-<span class="sourceLineNo">867</span> if (fIndex != -1)<a name="line.867"></a>
-<span class="sourceLineNo">868</span> next = fields[fIndex++];<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><a name="line.871"></a>
-<span class="sourceLineNo">872</span> @Override<a name="line.872"></a>
-<span class="sourceLineNo">873</span> public Field next() {<a name="line.873"></a>
-<span class="sourceLineNo">874</span> prime();<a name="line.874"></a>
-<span class="sourceLineNo">875</span> Field f = next;<a name="line.875"></a>
-<span class="sourceLineNo">876</span> next = null;<a name="line.876"></a>
-<span class="sourceLineNo">877</span> return f;<a name="line.877"></a>
-<span class="sourceLineNo">878</span> }<a name="line.878"></a>
-<span class="sourceLineNo">879</span><a name="line.879"></a>
-<span class="sourceLineNo">880</span> @Override<a name="line.880"></a>
-<span class="sourceLineNo">881</span> public void remove() {<a name="line.881"></a>
-<span class="sourceLineNo">882</span> }<a name="line.882"></a>
-<span class="sourceLineNo">883</span> };<a name="line.883"></a>
-<span class="sourceLineNo">884</span> }<a name="line.884"></a>
-<span class="sourceLineNo">885</span> };<a name="line.885"></a>
-<span class="sourceLineNo">886</span> }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span> /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span> * Returns all the methods in the specified class and all parent classes.<a name="line.889"></a>
-<span class="sourceLineNo">890</span> *<a name="line.890"></a>
-<span class="sourceLineNo">891</span> * @param c The class to get all methods on.<a name="line.891"></a>
-<span class="sourceLineNo">892</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.892"></a>
-<span class="sourceLineNo">893</span> * @return An iterable of all methods in the specified class.<a name="line.893"></a>
-<span class="sourceLineNo">894</span> */<a name="line.894"></a>
-<span class="sourceLineNo">895</span> @SuppressWarnings("rawtypes")<a name="line.895"></a>
-<span class="sourceLineNo">896</span> public static Iterable<Method> getAllMethods(final Class c, final boolean parentFirst) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span> return new Iterable<Method>() {<a name="line.897"></a>
-<span class="sourceLineNo">898</span> @Override<a name="line.898"></a>
-<span class="sourceLineNo">899</span> public Iterator<Method> iterator() {<a name="line.899"></a>
-<span class="sourceLineNo">900</span> return new Iterator<Method>(){<a name="line.900"></a>
-<span class="sourceLineNo">901</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, true);<a name="line.901"></a>
-<span class="sourceLineNo">902</span> Method[] methods = classIterator.hasNext() ? classIterator.next().getDeclaredMethods() : new Method[0];<a name="line.902"></a>
-<span class="sourceLineNo">903</span> int mIndex = 0;<a name="line.903"></a>
-<span class="sourceLineNo">904</span> Method next;<a name="line.904"></a>
-<span class="sourceLineNo">905</span><a name="line.905"></a>
-<span class="sourceLineNo">906</span> @Override<a name="line.906"></a>
-<span class="sourceLineNo">907</span> public boolean hasNext() {<a name="line.907"></a>
-<span class="sourceLineNo">908</span> prime();<a name="line.908"></a>
-<span class="sourceLineNo">909</span> return next != null;<a name="line.909"></a>
-<span class="sourceLineNo">910</span> }<a name="line.910"></a>
+<span class="sourceLineNo">836</span> * <p><a name="line.836"></a>
+<span class="sourceLineNo">837</span> * Fields are ordered in either parent-to-child, or child-to-parent order, then alphabetically.<a name="line.837"></a>
+<span class="sourceLineNo">838</span> *<a name="line.838"></a>
+<span class="sourceLineNo">839</span> * @param c The class to get all fields on.<a name="line.839"></a>
+<span class="sourceLineNo">840</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.840"></a>
+<span class="sourceLineNo">841</span> * @return An iterable of all fields in the specified class.<a name="line.841"></a>
+<span class="sourceLineNo">842</span> */<a name="line.842"></a>
+<span class="sourceLineNo">843</span> @SuppressWarnings("rawtypes")<a name="line.843"></a>
+<span class="sourceLineNo">844</span> public static Iterable<Field> getAllFields(final Class c, final boolean parentFirst) {<a name="line.844"></a>
+<span class="sourceLineNo">845</span> return new Iterable<Field>() {<a name="line.845"></a>
+<span class="sourceLineNo">846</span> @Override<a name="line.846"></a>
+<span class="sourceLineNo">847</span> public Iterator<Field> iterator() {<a name="line.847"></a>
+<span class="sourceLineNo">848</span> return new Iterator<Field>(){<a name="line.848"></a>
+<span class="sourceLineNo">849</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, false);<a name="line.849"></a>
+<span class="sourceLineNo">850</span> Field[] fields = classIterator.hasNext() ? sort(classIterator.next().getDeclaredFields()) : new Field[0];<a name="line.850"></a>
+<span class="sourceLineNo">851</span> int fIndex = 0;<a name="line.851"></a>
+<span class="sourceLineNo">852</span> Field next;<a name="line.852"></a>
+<span class="sourceLineNo">853</span><a name="line.853"></a>
+<span class="sourceLineNo">854</span> @Override<a name="line.854"></a>
+<span class="sourceLineNo">855</span> public boolean hasNext() {<a name="line.855"></a>
+<span class="sourceLineNo">856</span> prime();<a name="line.856"></a>
+<span class="sourceLineNo">857</span> return next != null;<a name="line.857"></a>
+<span class="sourceLineNo">858</span> }<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span> private void prime() {<a name="line.860"></a>
+<span class="sourceLineNo">861</span> if (next == null) {<a name="line.861"></a>
+<span class="sourceLineNo">862</span> while (fIndex >= fields.length) {<a name="line.862"></a>
+<span class="sourceLineNo">863</span> if (classIterator.hasNext()) {<a name="line.863"></a>
+<span class="sourceLineNo">864</span> fields = sort(classIterator.next().getDeclaredFields());<a name="line.864"></a>
+<span class="sourceLineNo">865</span> fIndex = 0;<a name="line.865"></a>
+<span class="sourceLineNo">866</span> } else {<a name="line.866"></a>
+<span class="sourceLineNo">867</span> fIndex = -1;<a name="line.867"></a>
+<span class="sourceLineNo">868</span> }<a name="line.868"></a>
+<span class="sourceLineNo">869</span> }<a name="line.869"></a>
+<span class="sourceLineNo">870</span> if (fIndex != -1)<a name="line.870"></a>
+<span class="sourceLineNo">871</span> next = fields[fIndex++];<a name="line.871"></a>
+<span class="sourceLineNo">872</span> }<a name="line.872"></a>
+<span class="sourceLineNo">873</span> }<a name="line.873"></a>
+<span class="sourceLineNo">874</span><a name="line.874"></a>
+<span class="sourceLineNo">875</span> @Override<a name="line.875"></a>
+<span class="sourceLineNo">876</span> public Field next() {<a name="line.876"></a>
+<span class="sourceLineNo">877</span> prime();<a name="line.877"></a>
+<span class="sourceLineNo">878</span> Field f = next;<a name="line.878"></a>
+<span class="sourceLineNo">879</span> next = null;<a name="line.879"></a>
+<span class="sourceLineNo">880</span> return f;<a name="line.880"></a>
+<span class="sourceLineNo">881</span> }<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span> @Override<a name="line.883"></a>
+<span class="sourceLineNo">884</span> public void remove() {<a name="line.884"></a>
+<span class="sourceLineNo">885</span> }<a name="line.885"></a>
+<span class="sourceLineNo">886</span> };<a name="line.886"></a>
+<span class="sourceLineNo">887</span> }<a name="line.887"></a>
+<span class="sourceLineNo">888</span> };<a name="line.888"></a>
+<span class="sourceLineNo">889</span> }<a name="line.889"></a>
+<span class="sourceLineNo">890</span><a name="line.890"></a>
+<span class="sourceLineNo">891</span> /**<a name="line.891"></a>
+<span class="sourceLineNo">892</span> * Returns all the methods in the specified class and all parent classes.<a name="line.892"></a>
+<span class="sourceLineNo">893</span> *<a name="line.893"></a>
+<span class="sourceLineNo">894</span> * <p><a name="line.894"></a>
+<span class="sourceLineNo">895</span> * Methods are ordered in either parent-to-child, or child-to-parent order, then alphabetically.<a name="line.895"></a>
+<span class="sourceLineNo">896</span> *<a name="line.896"></a>
+<span class="sourceLineNo">897</span> * @param c The class to get all methods on.<a name="line.897"></a>
+<span class="sourceLineNo">898</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.898"></a>
+<span class="sourceLineNo">899</span> * @return An iterable of all methods in the specified class.<a name="line.899"></a>
+<span class="sourceLineNo">900</span> */<a name="line.900"></a>
+<span class="sourceLineNo">901</span> @SuppressWarnings("rawtypes")<a name="line.901"></a>
+<span class="sourceLineNo">902</span> public static Iterable<Method> getAllMethods(final Class c, final boolean parentFirst) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span> return new Iterable<Method>() {<a name="line.903"></a>
+<span class="sourceLineNo">904</span> @Override<a name="line.904"></a>
+<span class="sourceLineNo">905</span> public Iterator<Method> iterator() {<a name="line.905"></a>
+<span class="sourceLineNo">906</span> return new Iterator<Method>(){<a name="line.906"></a>
+<span class="sourceLineNo">907</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, true);<a name="line.907"></a>
+<span class="sourceLineNo">908</span> Method[] methods = classIterator.hasNext() ? sort(classIterator.next().getDeclaredMethods()) : new Method[0];<a name="line.908"></a>
+<span class="sourceLineNo">909</span> int mIndex = 0;<a name="line.909"></a>
+<span class="sourceLineNo">910</span> Method next;<a name="line.910"></a>
<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span> private void prime() {<a name="line.912"></a>
-<span class="sourceLineNo">913</span> if (next == null) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span> while (mIndex >= methods.length) {<a name="line.914"></a>
-<span class="sourceLineNo">915</span> if (classIterator.hasNext()) {<a name="line.915"></a>
-<span class="sourceLineNo">916</span> methods = classIterator.next().getDeclaredMethods();<a name="line.916"></a>
-<span class="sourceLineNo">917</span> mIndex = 0;<a name="line.917"></a>
-<span class="sourceLineNo">918</span> } else {<a name="line.918"></a>
-<span class="sourceLineNo">919</span> mIndex = -1;<a name="line.919"></a>
-<span class="sourceLineNo">920</span> }<a name="line.920"></a>
-<span class="sourceLineNo">921</span> }<a name="line.921"></a>
-<span class="sourceLineNo">922</span> if (mIndex != -1)<a name="line.922"></a>
-<span class="sourceLineNo">923</span> next = methods[mIndex++];<a name="line.923"></a>
-<span class="sourceLineNo">924</span> }<a name="line.924"></a>
-<span class="sourceLineNo">925</span> }<a name="line.925"></a>
-<span class="sourceLineNo">926</span><a name="line.926"></a>
-<span class="sourceLineNo">927</span> @Override<a name="line.927"></a>
-<span class="sourceLineNo">928</span> public Method next() {<a name="line.928"></a>
-<span class="sourceLineNo">929</span> prime();<a name="line.929"></a>
-<span class="sourceLineNo">930</span> Method m = next;<a name="line.930"></a>
-<span class="sourceLineNo">931</span> next = null;<a name="line.931"></a>
-<span class="sourceLineNo">932</span> return m;<a name="line.932"></a>
-<span class="sourceLineNo">933</span> }<a name="line.933"></a>
-<span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span> @Override<a name="line.935"></a>
-<span class="sourceLineNo">936</span> public void remove() {<a name="line.936"></a>
-<span class="sourceLineNo">937</span> }<a name="line.937"></a>
-<span class="sourceLineNo">938</span> };<a name="line.938"></a>
-<span class="sourceLineNo">939</span> }<a name="line.939"></a>
-<span class="sourceLineNo">940</span> };<a name="line.940"></a>
-<span class="sourceLineNo">941</span> }<a name="line.941"></a>
-<span class="sourceLineNo">942</span><a name="line.942"></a>
-<span class="sourceLineNo">943</span> /**<a name="line.943"></a>
-<span class="sourceLineNo">944</span> * Returns a list of all the parent classes of the specified class including the class itself.<a name="line.944"></a>
-<span class="sourceLineNo">945</span> *<a name="line.945"></a>
-<span class="sourceLineNo">946</span> * @param c The class to retrieve the parent classes.<a name="line.946"></a>
-<span class="sourceLineNo">947</span> * @param parentFirst In parent-to-child order, otherwise child-to-parent.<a name="line.947"></a>
-<span class="sourceLineNo">948</span> * @param includeInterfaces Include interfaces.<a name="line.948"></a>
-<span class="sourceLineNo">949</span> * @return An iterator of parent classes in the class hierarchy.<a name="line.949"></a>
-<span class="sourceLineNo">950</span> */<a name="line.950"></a>
-<span class="sourceLineNo">951</span> public static Iterator<Class<?>> getParentClasses(final Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span> List<Class<?>> l = getParentClasses(new ArrayList<Class<?>>(), c, parentFirst, includeInterfaces);<a name="line.952"></a>
-<span class="sourceLineNo">953</span> return l.iterator();<a name="line.953"></a>
-<span class="sourceLineNo">954</span> }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span> private static List<Class<?>> getParentClasses(List<Class<?>> l, Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span> if (parentFirst) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span> if (includeInterfaces)<a name="line.958"></a>
-<span class="sourceLineNo">959</span> for (Class<?> i : c.getInterfaces())<a name="line.959"></a>
-<span class="sourceLineNo">960</span> l.add(i);<a name="line.960"></a>
-<span class="sourceLineNo">961</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.961"></a>
-<span class="sourceLineNo">962</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.962"></a>
-<span class="sourceLineNo">963</span> l.add(c);<a name="line.963"></a>
-<span class="sourceLineNo">964</span> } else {<a name="line.964"></a>
-<span class="sourceLineNo">965</span> l.add(c);<a name="line.965"></a>
-<span class="sourceLineNo">966</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.966"></a>
-<span class="sourceLineNo">967</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.967"></a>
-<span class="sourceLineNo">968</span> if (includeInterfaces)<a name="line.968"></a>
-<span class="sourceLineNo">969</span> for (Class<?> i : c.getInterfaces())<a name="line.969"></a>
-<span class="sourceLineNo">970</span> l.add(i);<a name="line.970"></a>
-<span class="sourceLineNo">971</span> }<a name="line.971"></a>
-<span class="sourceLineNo">972</span> return l;<a name="line.972"></a>
-<span class="sourceLineNo">973</span> }<a name="line.973"></a>
-<span class="sourceLineNo">974</span><a name="line.974"></a>
-<span class="sourceLineNo">975</span> /**<a name="line.975"></a>
-<span class="sourceLineNo">976</span> * Returns the default value for the specified primitive class.<a name="line.976"></a>
-<span class="sourceLineNo">977</span> *<a name="line.977"></a>
-<span class="sourceLineNo">978</span> * @param primitiveClass The primitive class to get the default value for.<a name="line.978"></a>
-<span class="sourceLineNo">979</span> * @return The default value, or <jk>null</jk> if the specified class is not a primitive class.<a name="line.979"></a>
-<span class="sourceLineNo">980</span> */<a name="line.980"></a>
-<span class="sourceLineNo">981</span> public static Object getPrimitiveDefault(Class<?> primitiveClass) {<a name="line.981"></a>
-<span class="sourceLineNo">982</span> return primitiveDefaultMap.get(primitiveClass);<a name="line.982"></a>
-<span class="sourceLineNo">983</span> }<a name="line.983"></a>
+<span class="sourceLineNo">912</span> @Override<a name="line.912"></a>
+<span class="sourceLineNo">913</span> public boolean hasNext() {<a name="line.913"></a>
+<span class="sourceLineNo">914</span> prime();<a name="line.914"></a>
+<span class="sourceLineNo">915</span> return next != null;<a name="line.915"></a>
+<span class="sourceLineNo">916</span> }<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span> private void prime() {<a name="line.918"></a>
+<span class="sourceLineNo">919</span> if (next == null) {<a name="line.919"></a>
+<span class="sourceLineNo">920</span> while (mIndex >= methods.length) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span> if (classIterator.hasNext()) {<a name="line.921"></a>
+<span class="sourceLineNo">922</span> methods = sort(classIterator.next().getDeclaredMethods());<a name="line.922"></a>
+<span class="sourceLineNo">923</span> mIndex = 0;<a name="line.923"></a>
+<span class="sourceLineNo">924</span> } else {<a name="line.924"></a>
+<span class="sourceLineNo">925</span> mIndex = -1;<a name="line.925"></a>
+<span class="sourceLineNo">926</span> }<a name="line.926"></a>
+<span class="sourceLineNo">927</span> }<a name="line.927"></a>
+<span class="sourceLineNo">928</span> if (mIndex != -1)<a name="line.928"></a>
+<span class="sourceLineNo">929</span> next = methods[mIndex++];<a name="line.929"></a>
+<span class="sourceLineNo">930</span> }<a name="line.930"></a>
+<span class="sourceLineNo">931</span> }<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span> @Override<a name="line.933"></a>
+<span class="sourceLineNo">934</span> public Method next() {<a name="line.934"></a>
+<span class="sourceLineNo">935</span> prime();<a name="line.935"></a>
+<span class="sourceLineNo">936</span> Method m = next;<a name="line.936"></a>
+<span class="sourceLineNo">937</span> next = null;<a name="line.937"></a>
+<span class="sourceLineNo">938</span> return m;<a name="line.938"></a>
+<span class="sourceLineNo">939</span> }<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span> @Override<a name="line.941"></a>
+<span class="sourceLineNo">942</span> public void remove() {<a name="line.942"></a>
+<span class="sourceLineNo">943</span> }<a name="line.943"></a>
+<span class="sourceLineNo">944</span> };<a name="line.944"></a>
+<span class="sourceLineNo">945</span> }<a name="line.945"></a>
+<span class="sourceLineNo">946</span> };<a name="line.946"></a>
+<span class="sourceLineNo">947</span> }<a name="line.947"></a>
+<span class="sourceLineNo">948</span><a name="line.948"></a>
+<span class="sourceLineNo">949</span> private static Comparator<Method> METHOD_COMPARATOR = new Comparator<Method>() {<a name="line.949"></a>
+<span class="sourceLineNo">950</span><a name="line.950"></a>
+<span class="sourceLineNo">951</span> @Override<a name="line.951"></a>
+<span class="sourceLineNo">952</span> public int compare(Method o1, Method o2) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span> int i = o1.getName().compareTo(o2.getName());<a name="line.953"></a>
+<span class="sourceLineNo">954</span> if (i == 0) {<a name="line.954"></a>
+<span class="sourceLineNo">955</span> i = o1.getParameterCount() - o2.getParameterCount();<a name="line.955"></a>
+<span class="sourceLineNo">956</span> if (i == 0) {<a name="line.956"></a>
+<span class="sourceLineNo">957</span> for (int j = 0; j < o1.getParameterTypes().length && i == 0; j++) {<a name="line.957"></a>
+<span class="sourceLineNo">958</span> i = o1.getParameterTypes()[j].getName().compareTo(o2.getParameterTypes()[j].getName());<a name="line.958"></a>
+<span class="sourceLineNo">959</span> }<a name="line.959"></a>
+<span class="sourceLineNo">960</span> }<a name="line.960"></a>
+<span class="sourceLineNo">961</span> }<a name="line.961"></a>
+<span class="sourceLineNo">962</span> return i;<a name="line.962"></a>
+<span class="sourceLineNo">963</span> }<a name="line.963"></a>
+<span class="sourceLineNo">964</span> };<a name="line.964"></a>
+<span class="sourceLineNo">965</span><a name="line.965"></a>
+<span class="sourceLineNo">966</span> /**<a name="line.966"></a>
+<span class="sourceLineNo">967</span> * Sorts methods in alphabetical order.<a name="line.967"></a>
+<span class="sourceLineNo">968</span> *<a name="line.968"></a>
+<span class="sourceLineNo">969</span> * @param m The methods to sort.<a name="line.969"></a>
+<span class="sourceLineNo">970</span> * @return The same array, but with elements sorted.<a name="line.970"></a>
+<span class="sourceLineNo">971</span> */<a name="line.971"></a>
+<span class="sourceLineNo">972</span> public static Method[] sort(Method[] m) {<a name="line.972"></a>
+<span class="sourceLineNo">973</span> Arrays.sort(m, METHOD_COMPARATOR);<a name="line.973"></a>
+<span class="sourceLineNo">974</span> return m;<a name="line.974"></a>
+<span class="sourceLineNo">975</span> }<a name="line.975"></a>
+<span class="sourceLineNo">976</span><a name="line.976"></a>
+<span class="sourceLineNo">977</span> private static Comparator<Field> FIELD_COMPARATOR = new Comparator<Field>() {<a name="line.977"></a>
+<span class="sourceLineNo">978</span><a name="line.978"></a>
+<span class="sourceLineNo">979</span> @Override<a name="line.979"></a>
+<span class="sourceLineNo">980</span> public int compare(Field o1, Field o2) {<a name="line.980"></a>
+<span class="sourceLineNo">981</span> return o1.getName().compareTo(o2.getName());<a name="line.981"></a>
+<span class="sourceLineNo">982</span> }<a name="line.982"></a>
+<span class="sourceLineNo">983</span> };<a name="line.983"></a>
<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span> private static final Map<Class<?>,Object> primitiveDefaultMap = Collections.unmodifiableMap(<a name="line.985"></a>
-<span class="sourceLineNo">986</span> new AMap<Class<?>,Object>()<a name="line.986"></a>
-<span class="sourceLineNo">987</span> .append(Boolean.TYPE, false)<a name="line.987"></a>
-<span class="sourceLineNo">988</span> .append(Character.TYPE, (char)0)<a name="line.988"></a>
-<span class="sourceLineNo">989</span> .append(Short.TYPE, (short)0)<a name="line.989"></a>
-<span class="sourceLineNo">990</span> .append(Integer.TYPE, 0)<a name="line.990"></a>
-<span class="sourceLineNo">991</span> .append(Long.TYPE, 0l)<a name="line.991"></a>
-<span class="sourceLineNo">992</span> .append(Float.TYPE, 0f)<a name="line.992"></a>
-<span class="sourceLineNo">993</span> .append(Double.TYPE, 0d)<a name="line.993"></a>
-<span class="sourceLineNo">994</span> .append(Byte.TYPE, (byte)0)<a name="line.994"></a>
-<span class="sourceLineNo">995</span> .append(Boolean.class, false)<a name="line.995"></a>
-<span class="sourceLineNo">996</span> .append(Character.class, (char)0)<a name="line.996"></a>
-<span class="sourceLineNo">997</span> .append(Short.class, (short)0)<a name="line.997"></a>
-<span class="sourceLineNo">998</span> .append(Integer.class, 0)<a name="line.998"></a>
-<span class="sourceLineNo">999</span> .append(Long.class, 0l)<a name="line.999"></a>
-<span class="sourceLineNo">1000</span> .append(Float.class, 0f)<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span> .append(Double.class, 0d)<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span> .append(Byte.class, (byte)0)<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span> );<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>}<a name="line.1004"></a>
+<span class="sourceLineNo">985</span> /**<a name="line.985"></a>
+<span class="sourceLineNo">986</span> * Sorts methods in alphabetical order.<a name="line.986"></a>
+<span class="sourceLineNo">987</span> *<a name="line.987"></a>
+<span class="sourceLineNo">988</span> * @param m The methods to sort.<a name="line.988"></a>
+<span class="sourceLineNo">989</span> * @return The same array, but with elements sorted.<a name="line.989"></a>
+<span class="sourceLineNo">990</span> */<a name="line.990"></a>
+<span class="sourceLineNo">991</span> public static Field[] sort(Field[] m) {<a name="line.991"></a>
+<span class="sourceLineNo">992</span> Arrays.sort(m, FIELD_COMPARATOR);<a name="line.992"></a>
+<span class="sourceLineNo">993</span> return m;<a name="line.993"></a>
+<span class="sourceLineNo">994</span> }<a name="line.994"></a>
+<span class="sourceLineNo">995</span><a name="line.995"></a>
+<span class="sourceLineNo">996</span> /**<a name="line.996"></a>
+<span class="sourceLineNo">997</span> * Returns a list of all the parent classes of the specified class including the class itself.<a name="line.997"></a>
+<span class="sourceLineNo">998</span> *<a name="line.998"></a>
+<span class="sourceLineNo">999</span> * @param c The class to retrieve the parent classes.<a name="line.999"></a>
+<span class="sourceLineNo">1000</span> * @param parentFirst In parent-to-child order, otherwise child-to-parent.<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span> * @param includeInterfaces Include interfaces.<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span> * @return An iterator of parent classes in the class hierarchy.<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span> */<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span> public static Iterator<Class<?>> getParentClasses(final Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span> List<Class<?>> l = getParentClasses(new ArrayList<Class<?>>(), c, parentFirst, includeInterfaces);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span> return l.iterator();<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span> }<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span><a name="line.1008"></a>
+<span class="sourceLineNo">1009</span> private static List<Class<?>> getParentClasses(List<Class<?>> l, Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span> if (parentFirst) {<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span> if (includeInterfaces)<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span> for (Class<?> i : c.getInterfaces())<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span> l.add(i);<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span> l.add(c);<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span> } else {<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span> l.add(c);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span> if (includeInterfaces)<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span> for (Class<?> i : c.getInterfaces())<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span> l.add(i);<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span> }<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span> return l;<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span> }<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span><a name="line.1027"></a>
+<span class="sourceLineNo">1028</span> /**<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span> * Returns the default value for the specified primitive class.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span> *<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span> * @param primitiveClass The primitive class to get the default value for.<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span> * @return The default value, or <jk>null</jk> if the specified class is not a primitive class.<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span> */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span> public static Object getPrimitiveDefault(Class<?> primitiveClass) {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span> return primitiveDefaultMap.get(primitiveClass);<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span> }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span> private static final Map<Class<?>,Object> primitiveDefaultMap = Collections.unmodifiableMap(<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span> new AMap<Class<?>,Object>()<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span> .append(Boolean.TYPE, false)<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span> .append(Character.TYPE, (char)0)<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span> .append(Short.TYPE, (short)0)<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span> .append(Integer.TYPE, 0)<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span> .append(Long.TYPE, 0l)<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span> .append(Float.TYPE, 0f)<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span> .append(Double.TYPE, 0d)<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span> .append(Byte.TYPE, (byte)0)<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span> .append(Boolean.class, false)<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span> .append(Character.class, (char)0)<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span> .append(Short.class, (short)0)<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span> .append(Integer.class, 0)<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span> .append(Long.class, 0l)<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span> .append(Float.class, 0f)<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span> .append(Double.class, 0d)<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span> .append(Byte.class, (byte)0)<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span> );<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span><a name="line.1057"></a>
+<span class="sourceLineNo">1058</span> /**<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span> * Returns a readable representation of the specified method.<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span> *<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span> * <p><a name="line.1061"></a>
+<span class="sourceLineNo">1062</span> * The format of the string is <js>"full-qualified-class.method-name(parameter-simple-class-names)"</js>.<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span> *<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span> * @param m The method to stringify.<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span> * @return The stringified method.<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span> */<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span> public static String toString(Method m) {<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span> StringBuilder sb = new StringBuilder(m.getDeclaringClass().getName() + "." + m.getName() + "(");<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span> for (int i = 0; i < m.getParameterCount(); i++) {<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span> if (i > 0)<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span> sb.append(",");<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span> sb.append(m.getParameterTypes()[i].getSimpleName());<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span> }<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span> sb.append(")");<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span> return sb.toString();<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span> }<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span><a name="line.1077"></a>
+<span class="sourceLineNo">1078</span> /**<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span> * Returns a readable representation of the specified field.<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span> *<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span> * <p><a name="line.1081"></a>
+<span class="sourceLineNo">1082</span> * The format of the string is <js>"full-qualified-class.field-name"</js>.<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span> *<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span> * @param f The field to stringify.<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span> * @return The stringified field.<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span> */<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span> public static String toString(Field f) {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span> return f.getDeclaringClass().getName() + "." + f.getName();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span> }<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span><a name="line.1090"></a>
+<span class="sourceLineNo">1091</span> /**<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span> * Throws an {@link IllegalArgumentException} if the parameters on the method are not in the specified list provided.<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span> *<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span> * @param m The method to test.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span> * @param args The valid class types (exact) for the arguments.<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span> * @throws FormattedIllegalArgumentException If any of the parameters on the method weren't in the list.<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span> */<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span> public static void assertArgsOfType(Method m, Class<?>...args) throws FormattedIllegalArgumentException {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span> for (Class<?> c1 : m.getParameterTypes()) {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span> boolean foundMatch = false;<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span> for (Class<?> c2 : args)<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span> if (c1 == c2)<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span> foundMatch = true;<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span> if (! foundMatch)<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span> throw new FormattedIllegalArgumentException("Invalid argument of type {0} passed in method {1}. Only arguments of type {2} are allowed.", c1, m, args);<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span> }<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span> }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>}<a name="line.1108"></a>
[11/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 64ab6d9..57e0034 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
@@ -20,56 +20,66 @@
<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 org.apache.juneau.rest.*;<a name="line.15"></a>
-<span class="sourceLineNo">016</span>import org.apache.juneau.rest.annotation.*;<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.juneau.svl.vars.*;<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>/**<a name="line.19"></a>
-<span class="sourceLineNo">020</span> * Superclass for all REST resources.<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * <a name="line.21"></a>
-<span class="sourceLineNo">022</span> * <p><a name="line.22"></a>
-<span class="sourceLineNo">023</span> * In additional to the functionality of the {@link RestServletDefault} group,<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * augments the {@link RestContext#getVarResolver()} method with the following additional variable types:<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * <ul class='spaced-list'><a name="line.25"></a>
-<span class="sourceLineNo">026</span> * <li><a name="line.26"></a>
-<span class="sourceLineNo">027</span> * <code class='snippet'>$ARG{...}</code> - Command line arguments pulled from {@link Microservice#getArgs()}.<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * <a name="line.28"></a>
-<span class="sourceLineNo">029</span> * <h6 class='figure'>Example:</h6><a name="line.29"></a>
-<span class="sourceLineNo">030</span> * <p class='bcode'><a name="line.30"></a>
-<span class="sourceLineNo">031</span> * String firstArg = request.getVarResolver().resolve(<js>"$ARG{0}"</js>); <jc>// First argument.</jc><a name="line.31"></a>
-<span class="sourceLineNo">032</span> * String namedArg = request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>); <jc>// Named argument (e.g. "myarg=foo"). </jc><a name="line.32"></a>
-<span class="sourceLineNo">033</span> * </p><a name="line.33"></a>
-<span class="sourceLineNo">034</span> * <li><a name="line.34"></a>
-<span class="sourceLineNo">035</span> * <code class='snippet'>$MF{...}</code> - Manifest file entries pulled from {@link Microservice#getManifest()}.<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * <a name="line.36"></a>
-<span class="sourceLineNo">037</span> * <h6 class='figure'>Example:</h6><a name="line.37"></a>
-<span class="sourceLineNo">038</span> * <p class='bcode'><a name="line.38"></a>
-<span class="sourceLineNo">039</span> * String mainClass = request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>); <jc>// Main class. </jc><a name="line.39"></a>
-<span class="sourceLineNo">040</span> * </p><a name="line.40"></a>
-<span class="sourceLineNo">041</span> * </ul><a name="line.41"></a>
-<span class="sourceLineNo">042</span> */<a name="line.42"></a>
-<span class="sourceLineNo">043</span>@SuppressWarnings("serial")<a name="line.43"></a>
-<span class="sourceLineNo">044</span>@RestResource(<a name="line.44"></a>
-<span class="sourceLineNo">045</span> htmldoc=@HtmlDoc(<a name="line.45"></a>
-<span class="sourceLineNo">046</span> links={<a name="line.46"></a>
-<span class="sourceLineNo">047</span> "up: request:/..",<a name="line.47"></a>
-<span class="sourceLineNo">048</span> "options: servlet:/?method=OPTIONS"<a name="line.48"></a>
-<span class="sourceLineNo">049</span> },<a name="line.49"></a>
-<span class="sourceLineNo">050</span> stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"<a name="line.50"></a>
-<span class="sourceLineNo">051</span> ),<a name="line.51"></a>
-<span class="sourceLineNo">052</span> config="$S{juneau.configFile}"<a name="line.52"></a>
-<span class="sourceLineNo">053</span>)<a name="line.53"></a>
-<span class="sourceLineNo">054</span>public abstract class Resource extends RestServletDefault {<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span> @Override /* RestServlet */<a name="line.56"></a>
-<span class="sourceLineNo">057</span> public synchronized void init(RestConfig config) throws Exception {<a name="line.57"></a>
-<span class="sourceLineNo">058</span> config<a name="line.58"></a>
-<span class="sourceLineNo">059</span> .addVars(ArgsVar.class, ManifestFileVar.class)<a name="line.59"></a>
-<span class="sourceLineNo">060</span> .addVarContextObject(ArgsVar.SESSION_args, Microservice.getArgs())<a name="line.60"></a>
-<span class="sourceLineNo">061</span> .addVarContextObject(ManifestFileVar.SESSION_manifest, Microservice.getManifest());<a name="line.61"></a>
-<span class="sourceLineNo">062</span> super.init(config);<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">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">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/84931d4d/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 b73393e..ee29a69 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,57 +20,67 @@
<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 org.apache.juneau.rest.*;<a name="line.15"></a>
-<span class="sourceLineNo">016</span>import org.apache.juneau.rest.annotation.*;<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.juneau.svl.vars.*;<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>/**<a name="line.19"></a>
-<span class="sourceLineNo">020</span> * Superclass for all REST resource groups.<a name="line.20"></a>
-<span class="sourceLineNo">021</span> * <a name="line.21"></a>
-<span class="sourceLineNo">022</span> * <p><a name="line.22"></a>
-<span class="sourceLineNo">023</span> * In additional to the functionality of the {@link RestServletGroupDefault} group,<a name="line.23"></a>
-<span class="sourceLineNo">024</span> * augments the {@link RestContext#getVarResolver()} method with the following additional variable types:<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * <ul class='spaced-list'><a name="line.25"></a>
-<span class="sourceLineNo">026</span> * <li><a name="line.26"></a>
-<span class="sourceLineNo">027</span> * <jk>$ARG{...}</jk> - Command line arguments.<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * <br>Resolves values from {@link Microservice#getArgs()}.<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * <a name="line.29"></a>
-<span class="sourceLineNo">030</span> * <h6>Example:</h6><a name="line.30"></a>
-<span class="sourceLineNo">031</span> * <p class='bcode'><a name="line.31"></a>
-<span class="sourceLineNo">032</span> * String firstArg = request.getVarResolver().resolve(<js>"$ARG{0}"</js>); <jc>// First argument.</jc><a name="line.32"></a>
-<span class="sourceLineNo">033</span> * String namedArg = request.getVarResolver().resolve(<js>"$ARG{myarg}"</js>); <jc>// Named argument (e.g. "myarg=foo"). </jc><a name="line.33"></a>
-<span class="sourceLineNo">034</span> * </p><a name="line.34"></a>
-<span class="sourceLineNo">035</span> * <li><a name="line.35"></a>
-<span class="sourceLineNo">036</span> * <jk>$MF{...}</jk> - Manifest file entries.<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * <a name="line.37"></a>
-<span class="sourceLineNo">038</span> * <h6>Example:</h6><a name="line.38"></a>
-<span class="sourceLineNo">039</span> * <p class='bcode'><a name="line.39"></a>
-<span class="sourceLineNo">040</span> * String mainClass = request.getVarResolver().resolve(<js>"$MF{Main-Class}"</js>); <jc>// Main class. </jc><a name="line.40"></a>
-<span class="sourceLineNo">041</span> * </p><a name="line.41"></a>
-<span class="sourceLineNo">042</span> * </ul><a name="line.42"></a>
-<span class="sourceLineNo">043</span> */<a name="line.43"></a>
-<span class="sourceLineNo">044</span>@SuppressWarnings("serial")<a name="line.44"></a>
-<span class="sourceLineNo">045</span>@RestResource(<a name="line.45"></a>
-<span class="sourceLineNo">046</span> htmldoc=@HtmlDoc(<a name="line.46"></a>
-<span class="sourceLineNo">047</span> links={<a name="line.47"></a>
-<span class="sourceLineNo">048</span> "up: request:/..",<a name="line.48"></a>
-<span class="sourceLineNo">049</span> "options: servlet:/?method=OPTIONS"<a name="line.49"></a>
-<span class="sourceLineNo">050</span> },<a name="line.50"></a>
-<span class="sourceLineNo">051</span> stylesheet="$C{REST/stylesheet,servlet:/styles/devops.css}"<a name="line.51"></a>
-<span class="sourceLineNo">052</span> ),<a name="line.52"></a>
-<span class="sourceLineNo">053</span> config="$S{juneau.configFile}"<a name="line.53"></a>
-<span class="sourceLineNo">054</span>)<a name="line.54"></a>
-<span class="sourceLineNo">055</span>public abstract class ResourceGroup extends RestServletGroupDefault {<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span> @Override /* RestServlet */<a name="line.57"></a>
-<span class="sourceLineNo">058</span> public synchronized void init(RestConfig config) throws Exception {<a name="line.58"></a>
-<span class="sourceLineNo">059</span> config<a name="line.59"></a>
-<span class="sourceLineNo">060</span> .addVars(ArgsVar.class, ManifestFileVar.class)<a name="line.60"></a>
-<span class="sourceLineNo">061</span> .addVarContextObject(ArgsVar.SESSION_args, Microservice.getArgs())<a name="line.61"></a>
-<span class="sourceLineNo">062</span> .addVarContextObject(ManifestFileVar.SESSION_manifest, Microservice.getManifest());<a name="line.62"></a>
-<span class="sourceLineNo">063</span> super.init(config);<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">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">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/84931d4d/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 1e78668..a625c9c 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,58 +20,68 @@
<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 org.apache.juneau.rest.*;<a name="line.15"></a>
-<span class="sourceLineNo">016</span>import org.apache.juneau.rest.annotation.*;<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.juneau.rest.jena.*;<a name="line.17"></a>
-<span class="sourceLineNo">018</span>import org.apache.juneau.svl.vars.*;<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> * Superclass for all REST resource groups.<a name="line.21"></a>
-<span class="sourceLineNo">022</span> * <a name="line.22"></a>
-<span class="sourceLineNo">023</span> * <p><a name="line.23"></a>
-<span class="sourceLineNo">024</span> * In additional to the functionality of the {@link RestServletGroupDefault} group,<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * augments the {@link RestContext#getVarResolver()} method with the following additional variable types:<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * <ul class='spaced-list'><a name="line.26"></a>
-<span class="sourceLineNo">027</span> * <li><a name="line.27"></a>
-<span class="sourceLineNo">028</span> * <jk>$ARG{...}</jk> - Command line arguments.<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * <br>Resolves values 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>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> * <jk>$MF{...}</jk> - Manifest file entries.<a name="line.37"></a>
-<span class="sourceLineNo">038</span> * <a name="line.38"></a>
-<span class="sourceLineNo">039</span> * <h6>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 ResourceJenaGroup extends RestServletJenaGroupDefault {<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span> @Override /* RestServlet */<a name="line.58"></a>
-<span class="sourceLineNo">059</span> public synchronized void init(RestConfig config) throws Exception {<a name="line.59"></a>
-<span class="sourceLineNo">060</span> config<a name="line.60"></a>
-<span class="sourceLineNo">061</span> .addVars(ArgsVar.class, ManifestFileVar.class)<a name="line.61"></a>
-<span class="sourceLineNo">062</span> .addVarContextObject(ArgsVar.SESSION_args, Microservice.getArgs())<a name="line.62"></a>
-<span class="sourceLineNo">063</span> .addVarContextObject(ManifestFileVar.SESSION_manifest, Microservice.getManifest());<a name="line.63"></a>
-<span class="sourceLineNo">064</span> super.init(config);<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">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.rest.jena.*;<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>)<a name="line.58"></a>
+<span class="sourceLineNo">059</span>public abstract class ResourceJenaGroup extends RestServletJenaGroupDefault {<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> * Add <code>$ARGS</code> and <code>$MF</code> variable resolvers.<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * <a name="line.63"></a>
+<span class="sourceLineNo">064</span> * @param config The resource config.<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * @throws Exception<a name="line.65"></a>
+<span class="sourceLineNo">066</span> */<a name="line.66"></a>
+<span class="sourceLineNo">067</span> @RestHook(INIT) <a name="line.67"></a>
+<span class="sourceLineNo">068</span> public void addConfigVars(RestConfig config) throws Exception {<a name="line.68"></a>
+<span class="sourceLineNo">069</span> if (Microservice.getArgs() == null || Microservice.getConfig() == null)<a name="line.69"></a>
+<span class="sourceLineNo">070</span> throw new RestException(SC_INTERNAL_SERVER_ERROR, "Attempting to use ResourceJenaGroup class outside of RestMicroservice.");<a name="line.70"></a>
+<span class="sourceLineNo">071</span> config<a name="line.71"></a>
+<span class="sourceLineNo">072</span> .addVars(ArgsVar.class, ManifestFileVar.class)<a name="line.72"></a>
+<span class="sourceLineNo">073</span> .addVarContextObject(ArgsVar.SESSION_args, Microservice.getArgs())<a name="line.73"></a>
+<span class="sourceLineNo">074</span> .addVarContextObject(ManifestFileVar.SESSION_manifest, Microservice.getManifest());<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>
[10/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 a82b1ac..d65d0b4 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
@@ -22,716 +22,659 @@
<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.ArrayUtils.*;<a name="line.17"></a>
-<span class="sourceLineNo">018</span>import static org.apache.juneau.internal.ClassUtils.*;<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.jar.*;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.logging.*;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>import javax.servlet.*;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.juneau.*;<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.json.*;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.juneau.microservice.resources.*;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.juneau.parser.*;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.juneau.rest.annotation.*;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.eclipse.jetty.security.*;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.eclipse.jetty.security.authentication.*;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.eclipse.jetty.server.*;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.eclipse.jetty.server.ssl.*;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.eclipse.jetty.servlet.*;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.eclipse.jetty.util.security.*;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.eclipse.jetty.util.ssl.*;<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>/**<a name="line.42"></a>
-<span class="sourceLineNo">043</span> * Entry point for Juneau microservice that implements a REST interface using Jetty on a single port.<a name="line.43"></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.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 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.ini.*;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.juneau.json.*;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.juneau.microservice.resources.*;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.juneau.parser.*;<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.eclipse.jetty.server.*;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.eclipse.jetty.servlet.*;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.eclipse.jetty.xml.*;<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> * Entry point for Juneau microservice that implements a REST interface using Jetty on a single port.<a name="line.38"></a>
+<span class="sourceLineNo">039</span> *<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * <h6 class='topic'>Jetty Server Details</h6><a name="line.40"></a>
+<span class="sourceLineNo">041</span> * <a name="line.41"></a>
+<span class="sourceLineNo">042</span> * The Jetty server is created by the {@link #createServer()} method and started with the {@link #startServer()} method.<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * These methods can be overridden to provided customized behavior.<a name="line.43"></a>
<span class="sourceLineNo">044</span> *<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * <h6 class='topic'>Jetty Server Details</h6><a name="line.45"></a>
+<span class="sourceLineNo">045</span> * <h6 class='topic'>Defining REST Resources</h6><a name="line.45"></a>
<span class="sourceLineNo">046</span> * <a name="line.46"></a>
-<span class="sourceLineNo">047</span> * The Jetty server is created by the {@link #createServer()} method and started with the {@link #startServer()} method.<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * These methods can be overridden to provided customized behavior.<a name="line.48"></a>
+<span class="sourceLineNo">047</span> * Top-level REST resources are defined by the {@link #getResourceMap()} method.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * This method can be overridden to provide a customized list of REST resources.<a name="line.48"></a>
<span class="sourceLineNo">049</span> *<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * <h6 class='topic'>Defining REST Resources</h6><a name="line.50"></a>
+<span class="sourceLineNo">050</span> * <h6 class='topic'>Logging</h6><a name="line.50"></a>
<span class="sourceLineNo">051</span> * <a name="line.51"></a>
-<span class="sourceLineNo">052</span> * Top-level REST resources are defined by the {@link #getResourceMap()} method.<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * This method can be overridden to provide a customized list of REST resources.<a name="line.53"></a>
+<span class="sourceLineNo">052</span> * Logging is initialized by the {@link #initLogging()} method.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> * This method can be overridden to provide customized logging behavior.<a name="line.53"></a>
<span class="sourceLineNo">054</span> *<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * <h6 class='topic'>Logging</h6><a name="line.55"></a>
-<span class="sourceLineNo">056</span> * <a name="line.56"></a>
-<span class="sourceLineNo">057</span> * Logging is initialized by the {@link #initLogging()} method.<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * This method can be overridden to provide customized logging behavior.<a name="line.58"></a>
-<span class="sourceLineNo">059</span> *<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * <h6 class='topic'>Lifecycle Listener Methods</h6><a name="line.60"></a>
-<span class="sourceLineNo">061</span> * Subclasses can optionally implement the following event listener methods:<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * <ul class='spaced-list'><a name="line.62"></a>
-<span class="sourceLineNo">063</span> * <li><a name="line.63"></a>
-<span class="sourceLineNo">064</span> * {@link #onStart()} - Gets executed before {@link #start()}.<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * <li><a name="line.65"></a>
-<span class="sourceLineNo">066</span> * {@link #onStop()} - Gets executed before {@link #stop()}.<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * <li><a name="line.67"></a>
-<span class="sourceLineNo">068</span> * {@link #onCreateServer()} - Gets executed before {@link #createServer()}.<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * <li><a name="line.69"></a>
-<span class="sourceLineNo">070</span> * {@link #onStartServer()} - Gets executed before {@link #startServer()}.<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * <li><a name="line.71"></a>
-<span class="sourceLineNo">072</span> * {@link #onPostStartServer()} - Gets executed after {@link #startServer()}.<a name="line.72"></a>
-<span class="sourceLineNo">073</span> * <li><a name="line.73"></a>
-<span class="sourceLineNo">074</span> * {@link #onStopServer()} - Gets executed before {@link #stop()}.<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * <li><a name="line.75"></a>
-<span class="sourceLineNo">076</span> * {@link #onPostStopServer()} - Gets executed after {@link #stop()}.<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>public class RestMicroservice extends Microservice {<a name="line.79"></a>
-<span class="sourceLineNo">080</span> <a name="line.80"></a>
-<span class="sourceLineNo">081</span> ServletContextHandler servletContextHandler; <a name="line.81"></a>
-<span class="sourceLineNo">082</span> Server server;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> int port;<a name="line.83"></a>
-<span class="sourceLineNo">084</span> String contextPath;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> Logger logger;<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> * Main method.<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * <a name="line.89"></a>
-<span class="sourceLineNo">090</span> * <p><a name="line.90"></a>
-<span class="sourceLineNo">091</span> * Subclasses must also implement this method!<a name="line.91"></a>
-<span class="sourceLineNo">092</span> *<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * @param args Command line arguments.<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * @throws Exception<a name="line.94"></a>
-<span class="sourceLineNo">095</span> */<a name="line.95"></a>
-<span class="sourceLineNo">096</span> public static void main(String[] args) throws Exception {<a name="line.96"></a>
-<span class="sourceLineNo">097</span> new RestMicroservice(args).start().join();<a name="line.97"></a>
-<span class="sourceLineNo">098</span> }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span> /**<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * Constructor.<a name="line.101"></a>
-<span class="sourceLineNo">102</span> *<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * @param args Command line arguments.<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * @throws Exception<a name="line.104"></a>
-<span class="sourceLineNo">105</span> */<a name="line.105"></a>
-<span class="sourceLineNo">106</span> public RestMicroservice(String...args) throws Exception {<a name="line.106"></a>
-<span class="sourceLineNo">107</span> super(args);<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">055</span> * <h6 class='topic'>Lifecycle Listener Methods</h6><a name="line.55"></a>
+<span class="sourceLineNo">056</span> * Subclasses can optionally implement the following event listener methods:<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * <ul class='spaced-list'><a name="line.57"></a>
+<span class="sourceLineNo">058</span> * <li><a name="line.58"></a>
+<span class="sourceLineNo">059</span> * {@link #onStart()} - Gets executed before {@link #start()}.<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * <li><a name="line.60"></a>
+<span class="sourceLineNo">061</span> * {@link #onStop()} - Gets executed before {@link #stop()}.<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * <li><a name="line.62"></a>
+<span class="sourceLineNo">063</span> * {@link #onCreateServer()} - Gets executed before {@link #createServer()}.<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * <li><a name="line.64"></a>
+<span class="sourceLineNo">065</span> * {@link #onStartServer()} - Gets executed before {@link #startServer()}.<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * <li><a name="line.66"></a>
+<span class="sourceLineNo">067</span> * {@link #onPostStartServer()} - Gets executed after {@link #startServer()}.<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * <li><a name="line.68"></a>
+<span class="sourceLineNo">069</span> * {@link #onStopServer()} - Gets executed before {@link #stop()}.<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * <li><a name="line.70"></a>
+<span class="sourceLineNo">071</span> * {@link #onPostStopServer()} - Gets executed after {@link #stop()}.<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * </ul><a name="line.72"></a>
+<span class="sourceLineNo">073</span> */<a name="line.73"></a>
+<span class="sourceLineNo">074</span>public class RestMicroservice extends Microservice {<a name="line.74"></a>
+<span class="sourceLineNo">075</span> <a name="line.75"></a>
+<span class="sourceLineNo">076</span> ServletContextHandler servletContextHandler; <a name="line.76"></a>
+<span class="sourceLineNo">077</span> Server server;<a name="line.77"></a>
+<span class="sourceLineNo">078</span> int port;<a name="line.78"></a>
+<span class="sourceLineNo">079</span> String contextPath;<a name="line.79"></a>
+<span class="sourceLineNo">080</span> Logger logger;<a name="line.80"></a>
+<span class="sourceLineNo">081</span> Object jettyXml;<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> * Main method.<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * <a name="line.85"></a>
+<span class="sourceLineNo">086</span> * <p><a name="line.86"></a>
+<span class="sourceLineNo">087</span> * Subclasses must also implement this method!<a name="line.87"></a>
+<span class="sourceLineNo">088</span> *<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * @param args Command line arguments.<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * @throws Exception<a name="line.90"></a>
+<span class="sourceLineNo">091</span> */<a name="line.91"></a>
+<span class="sourceLineNo">092</span> public static void main(String[] args) throws Exception {<a name="line.92"></a>
+<span class="sourceLineNo">093</span> new RestMicroservice(args).start().join();<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> * Constructor.<a name="line.97"></a>
+<span class="sourceLineNo">098</span> *<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * @param args Command line arguments.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * @throws Exception<a name="line.100"></a>
+<span class="sourceLineNo">101</span> */<a name="line.101"></a>
+<span class="sourceLineNo">102</span> public RestMicroservice(String...args) throws Exception {<a name="line.102"></a>
+<span class="sourceLineNo">103</span> super(args);<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> //--------------------------------------------------------------------------------<a name="line.107"></a>
+<span class="sourceLineNo">108</span> // Methods implemented on Microservice API<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> //--------------------------------------------------------------------------------<a name="line.111"></a>
-<span class="sourceLineNo">112</span> // Methods implemented on Microservice API<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> @Override /* Microservice */<a name="line.115"></a>
-<span class="sourceLineNo">116</span> public RestMicroservice start() throws Exception {<a name="line.116"></a>
-<span class="sourceLineNo">117</span> super.start();<a name="line.117"></a>
-<span class="sourceLineNo">118</span> initLogging();<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">111</span> @Override /* Microservice */<a name="line.111"></a>
+<span class="sourceLineNo">112</span> public RestMicroservice start() throws Exception {<a name="line.112"></a>
+<span class="sourceLineNo">113</span> super.start();<a name="line.113"></a>
+<span class="sourceLineNo">114</span> try {<a name="line.114"></a>
+<span class="sourceLineNo">115</span> initLogging();<a name="line.115"></a>
+<span class="sourceLineNo">116</span> } catch (Exception e) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span> // If logging can be initialized, just print a stack trace and continue.<a name="line.117"></a>
+<span class="sourceLineNo">118</span> e.printStackTrace();<a name="line.118"></a>
+<span class="sourceLineNo">119</span> }<a name="line.119"></a>
+<span class="sourceLineNo">120</span> createServer();<a name="line.120"></a>
+<span class="sourceLineNo">121</span> startServer();<a name="line.121"></a>
+<span class="sourceLineNo">122</span> return this;<a name="line.122"></a>
+<span class="sourceLineNo">123</span> }<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span> @Override /* Microservice */<a name="line.125"></a>
+<span class="sourceLineNo">126</span> public RestMicroservice join() throws Exception {<a name="line.126"></a>
+<span class="sourceLineNo">127</span> server.join();<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 stop() {<a name="line.132"></a>
+<span class="sourceLineNo">133</span> Thread t = new Thread() {<a name="line.133"></a>
+<span class="sourceLineNo">134</span> @Override /* Thread */<a name="line.134"></a>
+<span class="sourceLineNo">135</span> public void run() {<a name="line.135"></a>
+<span class="sourceLineNo">136</span> try {<a name="line.136"></a>
+<span class="sourceLineNo">137</span> if (server.isStopping() || server.isStopped())<a name="line.137"></a>
+<span class="sourceLineNo">138</span> return;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> onStopServer();<a name="line.139"></a>
+<span class="sourceLineNo">140</span> logger.warning("Stopping server.");<a name="line.140"></a>
+<span class="sourceLineNo">141</span> server.stop();<a name="line.141"></a>
+<span class="sourceLineNo">142</span> logger.warning("Server stopped.");<a name="line.142"></a>
+<span class="sourceLineNo">143</span> onPostStopServer();<a name="line.143"></a>
+<span class="sourceLineNo">144</span> } catch (Exception e) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span> logger.log(Level.SEVERE, e.getLocalizedMessage(), e);<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> t.start();<a name="line.149"></a>
+<span class="sourceLineNo">150</span> try {<a name="line.150"></a>
+<span class="sourceLineNo">151</span> t.join();<a name="line.151"></a>
+<span class="sourceLineNo">152</span> } catch (InterruptedException e) {<a name="line.152"></a>
+<span class="sourceLineNo">153</span> e.printStackTrace();<a name="line.153"></a>
+<span class="sourceLineNo">154</span> }<a name="line.154"></a>
+<span class="sourceLineNo">155</span> super.stop();<a name="line.155"></a>
+<span class="sourceLineNo">156</span> return this;<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">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">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(Level.class, l));<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> * <p class='bcode'><a name="line.300"></a>
-<span class="sourceLineNo">301</span> * <cc>#================================================================================<a name="line.301"></a>
-<span class="sourceLineNo">302</span> * # REST settings<a name="line.302"></a>
-<span class="sourceLineNo">303</span> * #================================================================================</cc><a name="line.303"></a>
-<span class="sourceLineNo">304</span> * <cs>[REST]</cs><a name="line.304"></a>
-<span class="sourceLineNo">305</span> *<a name="line.305"></a>
-<span class="sourceLineNo">306</span> * <cc># The HTTP port number to use.<a name="line.306"></a>
-<span class="sourceLineNo">307</span> * # Default is Rest-Port setting in manifest file, or 8000.<a name="line.307"></a>
-<span class="sourceLineNo">308</span> * # Can also specify a comma-delimited lists of ports to try, including 0 meaning<a name="line.308"></a>
-<span class="sourceLineNo">309</span> * # try a random port.</cc><a name="line.309"></a>
-<span class="sourceLineNo">310</span> * <ck>port</ck> = 10000<a name="line.310"></a>
-<span class="sourceLineNo">311</span> *<a name="line.311"></a>
-<span class="sourceLineNo">312</span> * <cc># The context root of the Jetty server.<a name="line.312"></a>
-<span class="sourceLineNo">313</span> * # Default is Rest-ContextPath in manifest file, or "/".</cc><a name="line.313"></a>
-<span class="sourceLineNo">314</span> * <ck>contextPath</ck> =<a name="line.314"></a>
-<span class="sourceLineNo">315</span> *<a name="line.315"></a>
-<span class="sourceLineNo">316</span> * <cc># Authentication: NONE, BASIC.<a name="line.316"></a>
-<span class="sourceLineNo">317</span> * # Default is Rest-AuthType in manifest file, or NONE.</cc><a name="line.317"></a>
-<span class="sourceLineNo">318</span> * <ck>authType</ck> = NONE<a name="line.318"></a>
-<span class="sourceLineNo">319</span> *<a name="line.319"></a>
-<span class="sourceLineNo">320</span> * <cc># The BASIC auth username.<a name="line.320"></a>
-<span class="sourceLineNo">321</span> * # Default is Rest-LoginUser in manifest file.</cc><a name="line.321"></a>
-<span class="sourceLineNo">322</span> * <ck>loginUser</ck> =<a name="line.322"></a>
-<span class="sourceLineNo">323</span> *<a name="line.323"></a>
-<span class="sourceLineNo">324</span> * <cc># The BASIC auth password.<a name="line.324"></a>
-<span class="sourceLineNo">325</span> * # Default is Rest-LoginPassword in manifest file.</cc><a name="line.325"></a>
-<span class="sourceLineNo">326</span> * <ck>loginPassword</ck> =<a name="line.326"></a>
-<span class="sourceLineNo">327</span> *<a name="line.327"></a>
-<span class="sourceLineNo">328</span> * <cc># The BASIC auth realm.<a name="line.328"></a>
-<span class="sourceLineNo">329</span> * # Default is Rest-AuthRealm in manifest file.</cc><a name="line.329"></a>
-<span class="sourceLineNo">330</span> * <ck>authRealm</ck> =<a name="line.330"></a>
-<span class="sourceLineNo">331</span> *<a name="line.331"></a>
-<span class="sourceLineNo">332</span> * <cc># Enable SSL support.</cc><a name="line.332"></a>
-<span class="sourceLineNo">333</span> * <ck>useSsl</ck> = false<a name="line.333"></a>
-<span class="sourceLineNo">334</span> *<a name="line.334"></a>
-<span class="sourceLineNo">335</span> * <cc>#================================================================================<a name="line.335"></a>
-<span class="sourceLineNo">336</span> * # Bean properties on the org.eclipse.jetty.util.ssl.SslSocketFactory class<a name="line.336"></a>
-<span class="sourceLineNo">337</span> * #--------------------------------------------------------------------------------<a name="line.337"></a>
-<span class="sourceLineNo">338</span> * # Ignored if REST/useSsl is false.<a name="line.338"></a>
-<span class="sourceLineNo">339</span> * #================================================================================</cc><a name="line.339"></a>
-<span class="sourceLineNo">340</span> * <cs>[REST-SslContextFactory]</cs><a name="line.340"></a>
-<span class="sourceLineNo">341</span> * <ck>keyStorePath</ck> = client_keystore.jks<a name="line.341"></a>
-<span class="sourceLineNo">342</span> * <ck>keyStorePassword*</ck> = {HRAaRQoT}<a name="line.342"></a>
-<span class="sourceLineNo">343</span> * <ck>excludeCipherSuites</ck> = TLS_DHE.*, TLS_EDH.*<a name="line.343"></a>
-<span class="sourceLineNo">344</span> * <ck>excludeProtocols</ck> = SSLv3<a name="line.344"></a>
-<span class="sourceLineNo">345</span> * <ck>allowRenegotiate</ck> = false<a name="line.345"></a>
-<span class="sourceLineNo">346</span> * </p><a name="line.346"></a>
-<span class="sourceLineNo">347</span> *<a name="line.347"></a>
-<span class="sourceLineNo">348</span> * @return The newly-created server.<a name="line.348"></a>
-<span class="sourceLineNo">349</span> * @throws Exception<a name="line.349"></a>
-<span class="sourceLineNo">350</span> */<a name="line.350"></a>
-<span class="sourceLineNo">351</span> protected Server createServer() throws Exception {<a name="line.351"></a>
-<span class="sourceLineNo">352</span> onCreateServer();<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span> ConfigFile cf = getConfig();<a name="line.354"></a>
-<span class="sourceLineNo">355</span> ObjectMap mf = getManifest();<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span> int[] ports = cf.getObjectWithDefault("REST/port", mf.get(int[].class, "Rest-Port", new int[]{8000}), int[].class);<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span> port = findOpenPort(ports);<a name="line.359"></a>
-<span class="sourceLineNo">360</span> if (port == 0) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span> System.err.println("Open port not found. Tried " + JsonSerializer.DEFAULT_LAX.toString(ports));<a name="line.361"></a>
-<span class="sourceLineNo">362</span> System.exit(1);<a name="line.362"></a>
-<span class="sourceLineNo">363</span> }<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span> contextPath = cf.getString("REST/contextPath", mf.getString("Rest-ContextPath", "/"));<a name="line.365"></a>
-<span class="sourceLineNo">366</span><a name="line.366"></a>
-<span class="sourceLineNo">367</span> if (cf.getBoolean("REST/useSsl")) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span> SslContextFactory sslContextFactory = new SslContextFactory();<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span> // Write the properties in REST-SslContextFactory to the bean setters on sslContextFactory.<a name="line.371"></a>
-<span class="sourceLineNo">372</span> // Throws an exception if section contains unknown properties.<a name="line.372"></a>
-<span class="sourceLineNo">373</span> // Only look for bean properties of type String/String/boolean/int since class has multiple<a name="line.373"></a>
-<span class="sourceLineNo">374</span> // setters with the same name (e.g. setKeyStore(KeyStore) and setKeyStore(String)).<a name="line.374"></a>
-<span class="sourceLineNo">375</span> ObjectMap m = cf.writeProperties("REST-SslContextFactory", sslContextFactory, false, String.class, String[].class, boolean.class, int.class);<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span> // We're using Jetty 8 that doesn't allow regular expression matching in SslContextFactory.setExcludeCipherSuites(),<a name="line.377"></a>
-<span class="sourceLineNo">378</span> // so to prevent having the config file list all old cipher suites, exclude the known bad ones.<a name="line.378"></a>
-<span class="sourceLineNo">379</span> String[] excludeCipherSuites = combine(<a name="line.379"></a>
-<span class="sourceLineNo">380</span> split("SSL_RSA_WITH_DES_CBC_SHA,SSL_DHE_RSA_WITH_DES_CBC_SHA,SSL_DHE_DSS_WITH_DES_CBC_SHA,SSL_RSA_EXPORT_WITH_RC4_40_MD5,SSL_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA"),<a name="line.380"></a>
-<span class="sourceLineNo">381</span> sslContextFactory.getExcludeCipherSuites()<a name="line.381"></a>
-<span class="sourceLineNo">382</span> );<a name="line.382"></a>
-<span class="sourceLineNo">383</span> sslContextFactory.setExcludeCipherSuites(excludeCipherSuites);<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span> logger.log(Level.WARNING, "SSL properties set: {0}", JsonSerializer.DEFAULT_LAX.toString(m));<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span> SslSocketConnector connector = new SslSocketConnector(sslContextFactory);<a name="line.387"></a>
-<span class="sourceLineNo">388</span> connector.setPort(port);<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span> server = new Server();<a name="line.390"></a>
-<span class="sourceLineNo">391</span> server.setConnectors(new Connector[] { connector });<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span> } else {<a name="line.393"></a>
-<span class="sourceLineNo">394</span> server = new Server(port);<a name="line.394"></a>
-<span class="sourceLineNo">395</span> }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span> servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span> String authType = cf.getString("REST/authType", mf.getString("Rest-AuthType", "NONE"));<a name="line.399"></a>
-<span class="sourceLineNo">400</span> if (authType.equals("BASIC"))<a name="line.400"></a>
-<span class="sourceLineNo">401</span> servletContextHandler.setSecurityHandler(basicAuth(cf, mf));<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span> servletContextHandler.setContextPath(contextPath);<a name="line.403"></a>
-<span class="sourceLineNo">404</span> server.setHandler(servletContextHandler);<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span> for (Map.Entry<String,Class<? extends Servlet>> e : getResourceMap().entrySet())<a name="line.406"></a>
-<span class="sourceLineNo">407</span> servletContextHandler.addServlet(e.getValue(), e.getKey()).setInitOrder(0);<a name="line.407"></a>
-<span class="sourceLineNo">408</span> <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> /**<a name="line.412"></a>
-<span class="sourceLineNo">413</span> * Adds an arbitrary servlet to this microservice.<a name="line.413"></a>
-<span class="sourceLineNo">414</span> * <a name="line.414"></a>
-<span class="sourceLineNo">415</span> * @param servlet The servlet instance.<a name="line.415"></a>
-<span class="sourceLineNo">416</span> * @param pathSpec The context path of the servlet.<a name="line.416"></a>
-<span class="sourceLineNo">417</span> * @return This object (for method chaining).<a name="line.417"></a>
-<span class="sourceLineNo">418</span> * @throws RuntimeException if {@link #createServer()} has not previously been called.<a name="line.418"></a>
-<span class="sourceLineNo">419</span> */<a name="line.419"></a>
-<span class="sourceLineNo">420</span> public RestMicroservice addServlet(Servlet servlet, String pathSpec) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span> if (servletContextHandler == null)<a name="line.421"></a>
-<span class="sourceLineNo">422</span> throw new RuntimeException("Servlet context handler not found. createServer() must be called first.");<a name="line.422"></a>
-<span class="sourceLineNo">423</span> ServletHolder sh = new ServletHolder(servlet);<a name="line.423"></a>
-<span class="sourceLineNo">424</span> servletContextHandler.addServlet(sh, pathSpec);<a name="line.424"></a>
-<span class="sourceLineNo">425</span> return this;<a name="line.425"></a>
-<span class="sourceLineNo">426</span> }<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> * Adds a servlet attribute to the Jetty server.<a name="line.429"></a>
-<span class="sourceLineNo">430</span> * <a name="line.430"></a>
-<span class="sourceLineNo">431</span> * @param name The server attribute name.<a name="line.431"></a>
-<span class="sourceLineNo">432</span> * @param value The context path of the servlet.<a name="line.432"></a>
-<span class="sourceLineNo">433</span> * @return This object (for method chaining).<a name="line.433"></a>
-<span class="sourceLineNo">434</span> * @throws RuntimeException if {@link #createServer()} has not previously been called.<a name="line.434"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span> //--------------------------------------------------------------------------------<a name="line.160"></a>
+<span class="sourceLineNo">161</span> // RestMicroservice API methods.<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> /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span> * Returns the port that this microservice started up on.<a name="line.165"></a>
+<span class="sourceLineNo">166</span> * @return The port that this microservice started up on.<a name="line.166"></a>
+<span class="sourceLineNo">167</span> */<a name="line.167"></a>
+<span class="sourceLineNo">168</span> public int getPort() {<a name="line.168"></a>
+<span class="sourceLineNo">169</span> return port;<a name="line.169"></a>
+<span class="sourceLineNo">170</span> }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span> /**<a name="line.172"></a>
+<span class="sourceLineNo">173</span> * Returns the URI where this microservice is listening on.<a name="line.173"></a>
+<span class="sourceLineNo">174</span> * @return The URI where this microservice is listening on.<a name="line.174"></a>
+<span class="sourceLineNo">175</span> */<a name="line.175"></a>
+<span class="sourceLineNo">176</span> public URI getURI() {<a name="line.176"></a>
+<span class="sourceLineNo">177</span> String scheme = getConfig().getBoolean("REST/useSsl") ? "https" : "http";<a name="line.177"></a>
+<span class="sourceLineNo">178</span> String hostname = "localhost";<a name="line.178"></a>
+<span class="sourceLineNo">179</span> String ctx = "/".equals(contextPath) ? null : contextPath;<a name="line.179"></a>
+<span class="sourceLineNo">180</span> try {<a name="line.180"></a>
+<span class="sourceLineNo">181</span> hostname = InetAddress.getLocalHost().getHostName();<a name="line.181"></a>
+<span class="sourceLineNo">182</span> } catch (UnknownHostException e) {}<a name="line.182"></a>
+<span class="sourceLineNo">183</span> try {<a name="line.183"></a>
+<span class="sourceLineNo">184</span> return new URI(scheme, null, hostname, port, ctx, null, null);<a name="line.184"></a>
+<span class="sourceLineNo">185</span> } catch (URISyntaxException e) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span> throw new RuntimeException(e);<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> /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span> * Initialize the logging for this microservice.<a name="line.191"></a>
+<span class="sourceLineNo">192</span> * <a name="line.192"></a>
+<span class="sourceLineNo">193</span> * <p><a name="line.193"></a>
+<span class="sourceLineNo">194</span> * Subclasses can override this method to provide customized logging.<a name="line.194"></a>
+<span class="sourceLineNo">195</span> * <a name="line.195"></a>
+<span class="sourceLineNo">196</span> * <p><a name="line.196"></a>
+<span class="sourceLineNo">197</span> * The default implementation uses the <cs>Logging</cs> section in the config file to set up logging:<a name="line.197"></a>
+<span class="sourceLineNo">198</span> * <p class='bcode'><a name="line.198"></a>
+<span class="sourceLineNo">199</span> * <cc>#================================================================================<a name="line.199"></a>
+<span class="sourceLineNo">200</span> * # Logger settings<a name="line.200"></a>
+<span class="sourceLineNo">201</span> * # See FileHandler Java class for details.<a name="line.201"></a>
+<span class="sourceLineNo">202</span> * #================================================================================</cc><a name="line.202"></a>
+<span class="sourceLineNo">203</span> * <cs>[Logging]</cs><a name="line.203"></a>
+<span class="sourceLineNo">204</span> *<a name="line.204"></a>
+<span class="sourceLineNo">205</span> * <cc># The directory where to create the log file.<a name="line.205"></a>
+<span class="sourceLineNo">206</span> * # Default is ".".</cc><a name="line.206"></a>
+<span class="sourceLineNo">207</span> * <ck>logDir</ck> = logs<a name="line.207"></a>
+<span class="sourceLineNo">208</span> *<a name="line.208"></a>
+<span class="sourceLineNo">209</span> * <cc># The name of the log file to create for the main logger.<a name="line.209"></a>
+<span class="sourceLineNo">210</span> * # The logDir and logFile make up the pattern that's passed to the FileHandler<a name="line.210"></a>
+<span class="sourceLineNo">211</span> * # constructor.<a name="line.211"></a>
+<span class="sourceLineNo">212</span> * # If value is not specified, then logging to a file will not be set up.</cc><a name="line.212"></a>
+<span class="sourceLineNo">213</span> * <ck>logFile</ck> = microservice.%g.log<a name="line.213"></a>
+<span class="sourceLineNo">214</span> *<a name="line.214"></a>
+<span class="sourceLineNo">215</span> * <cc># Whether to append to the existing log file or create a new one.<a name="line.215"></a>
+<span class="sourceLineNo">216</span> * # Default is false.</cc><a name="line.216"></a>
+<span class="sourceLineNo">217</span> * <ck>append</ck> =<a name="line.217"></a>
+<span class="sourceLineNo">218</span> *<a name="line.218"></a>
+<span class="sourceLineNo">219</span> * <cc># The SimpleDateFormat format to use for dates.<a name="line.219"></a>
+<span class="sourceLineNo">220</span> * # Default is "yyyy.MM.dd hh:mm:ss".</cc><a name="line.220"></a>
+<span class="sourceLineNo">221</span> * <ck>dateFormat</ck> =<a name="line.221"></a>
+<span class="sourceLineNo">222</span> *<a name="line.222"></a>
+<span class="sourceLineNo">223</span> * <cc># The log message format.<a name="line.223"></a>
+<span class="sourceLineNo">224</span> * # The value can contain any of the following variables:<a name="line.224"></a>
+<span class="sourceLineNo">225</span> * # {date} - The date, formatted per dateFormat.<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * # {class} - The class name.<a name="line.226"></a>
+<span class="sourceLineNo">227</span> * # {method} - The method name.<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * # {logger} - The logger name.<a name="line.228"></a>
+<span class="sourceLineNo">229</span> * # {level} - The log level name.<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * # {msg} - The log message.<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * # {threadid} - The thread ID.<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * # {exception} - The localized exception message.<a name="line.232"></a>
+<span class="sourceLineNo">233</span> * # Default is "[{date} {level}] {msg}%n".</cc><a name="line.233"></a>
+<span class="sourceLineNo">234</span> * <ck>format</ck> =<a name="line.234"></a>
+<span class="sourceLineNo">235</span> *<a name="line.235"></a>
+<span class="sourceLineNo">236</span> * <cc># The maximum log file size.<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * # Suffixes available for numbers.<a name="line.237"></a>
+<span class="sourceLineNo">238</span> * # See ConfigFile.getInt(String,int) for details.<a name="line.238"></a>
+<span class="sourceLineNo">239</span> * # Default is 1M.</cc><a name="line.239"></a>
+<span class="sourceLineNo">240</span> * <ck>limit</ck> = 10M<a name="line.240"></a>
+<span class="sourceLineNo">241</span> *<a name="line.241"></a>
+<span class="sourceLineNo">242</span> * <cc># Max number of log files.<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * # Default is 1.</cc><a name="line.243"></a>
+<span class="sourceLineNo">244</span> * <ck>count</ck> = 5<a name="line.244"></a>
+<span class="sourceLineNo">245</span> *<a name="line.245"></a>
+<span class="sourceLineNo">246</span> * <cc># Default log levels.<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * # Keys are logger names.<a name="line.247"></a>
+<span class="sourceLineNo">248</span> * # Values are serialized Level POJOs.</cc><a name="line.248"></a>
+<span class="sourceLineNo">249</span> * <ck>levels</ck> = { org.apache.juneau:'INFO' }<a name="line.249"></a>
+<span class="sourceLineNo">250</span> *<a name="line.250"></a>
+<span class="sourceLineNo">251</span> * <cc># Only print unique stack traces once and then refer to them by a simple 8 character hash identifier.<a name="line.251"></a>
+<span class="sourceLineNo">252</span> * # Useful for preventing log files from filling up with duplicate stack traces.<a name="line.252"></a>
+<span class="sourceLineNo">253</span> * # Default is false.</cc><a name="line.253"></a>
+<span class="sourceLineNo">254</span> * <ck>useStackTraceHashes</ck> = true<a name="line.254"></a>
+<span class="sourceLineNo">255</span> *<a name="line.255"></a>
+<span class="sourceLineNo">256</span> * <cc># The default level for the console logger.<a name="line.256"></a>
+<span class="sourceLineNo">257</span> * # Default is WARNING.</cc><a name="line.257"></a>
+<span class="sourceLineNo">258</span> * <ck>consoleLevel</ck> = WARNING<a name="line.258"></a>
+<span class="sourceLineNo">259</span> * </p><a name="line.259"></a>
+<span class="sourceLineNo">260</span> *<a name="line.260"></a>
+<span class="sourceLineNo">261</span> * @throws Exception<a name="line.261"></a>
+<span class="sourceLineNo">262</span> */<a name="line.262"></a>
+<span class="sourceLineNo">263</span> protected void initLogging() throws Exception {<a name="line.263"></a>
+<span class="sourceLineNo">264</span> ConfigFile cf = getConfig();<a name="line.264"></a>
+<span class="sourceLineNo">265</span> logger = Logger.getLogger("");<a name="line.265"></a>
+<span class="sourceLineNo">266</span> String logFile = cf.getString("Logging/logFile");<a name="line.266"></a>
+<span class="sourceLineNo">267</span> if (! isEmpty(logFile)) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span> LogManager.getLogManager().reset();<a name="line.268"></a>
+<span class="sourceLineNo">269</span> String logDir = cf.getString("Logging/logDir", ".");<a name="line.269"></a>
+<span class="sourceLineNo">270</span> mkdirs(new File(logDir), false);<a name="line.270"></a>
+<span class="sourceLineNo">271</span> boolean append = cf.getBoolean("Logging/append");<a name="line.271"></a>
+<span class="sourceLineNo">272</span> int limit = cf.getInt("Logging/limit", 1024*1024);<a name="line.272"></a>
+<span class="sourceLineNo">273</span> int count = cf.getInt("Logging/count", 1);<a name="line.273"></a>
+<span class="sourceLineNo">274</span> FileHandler fh = new FileHandler(logDir + '/' + logFile, limit, count, append);<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span> boolean useStackTraceHashes = cf.getBoolean("Logging/useStackTraceHashes");<a name="line.276"></a>
+<span class="sourceLineNo">277</span> String format = cf.getString("Logging/format", "[{date} {level}] {msg}%n");<a name="line.277"></a>
+<span class="sourceLineNo">278</span> String dateFormat = cf.getString("Logging/dateFormat", "yyyy.MM.dd hh:mm:ss");<a name="line.278"></a>
+<span class="sourceLineNo">279</span> fh.setFormatter(new LogEntryFormatter(format, dateFormat, useStackTraceHashes));<a name="line.279"></a>
+<span class="sourceLineNo">280</span> logger.addHandler(fh);<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span> ConsoleHandler ch = new ConsoleHandler();<a name="line.282"></a>
+<span class="sourceLineNo">283</span> ch.setLevel(Level.parse(cf.getString("Logging/consoleLevel", "WARNING")));<a name="line.283"></a>
+<span class="sourceLineNo">284</span> ch.setFormatter(new LogEntryFormatter(format, dateFormat, false));<a name="line.284"></a>
+<span class="sourceLineNo">285</span> logger.addHandler(ch);<a name="line.285"></a>
+<span class="sourceLineNo">286</span> }<a name="line.286"></a>
+<span class="sourceLineNo">287</span> ObjectMap loggerLevels = cf.getObject("Logging/levels", ObjectMap.class);<a name="line.287"></a>
+<span class="sourceLineNo">288</span> if (loggerLevels != null)<a name="line.288"></a>
+<span class="sourceLineNo">289</span> for (String l : loggerLevels.keySet())<a name="line.289"></a>
+<span class="sourceLineNo">290</span> Logger.getLogger(l).setLevel(loggerLevels.get(Level.class, l));<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> /**<a name="line.293"></a>
+<span class="sourceLineNo">294</span> * Method used to create (but not start) an instance of a Jetty server.<a name="line.294"></a>
+<span class="sourceLineNo">295</span> * <a name="line.295"></a>
+<span class="sourceLineNo">296</span> * <p><a name="line.296"></a>
+<span class="sourceLineNo">297</span> * Subclasses can override this method to customize the Jetty server before it is started.<a name="line.297"></a>
+<span class="sourceLineNo">298</span> * <a name="line.298"></a>
+<span class="sourceLineNo">299</span> * <p><a name="line.299"></a>
+<span class="sourceLineNo">300</span> * The default implementation is configured by the following values in the config file <a name="line.300"></a>
+<span class="sourceLineNo">301</span> * if a jetty.xml is not specified via a <code>REST/jettyXml</code> setting:<a name="line.301"></a>
+<span class="sourceLineNo">302</span> * <p class='bcode'><a name="line.302"></a>
+<span class="sourceLineNo">303</span> * <cc>#================================================================================<a name="line.303"></a>
+<span class="sourceLineNo">304</span> * # REST settings<a name="line.304"></a>
+<span class="sourceLineNo">305</span> * #================================================================================</cc><a name="line.305"></a>
+<span class="sourceLineNo">306</span> * <cs>[REST]</cs><a name="line.306"></a>
+<span class="sourceLineNo">307</span> *<a name="line.307"></a>
+<span class="sourceLineNo">308</span> * <cc># The HTTP port number to use.<a name="line.308"></a>
+<span class="sourceLineNo">309</span> * # Default is Rest-Port setting in manifest file, or 8000.<a name="line.309"></a>
+<span class="sourceLineNo">310</span> * # Can also specify a comma-delimited lists of ports to try, including 0 meaning<a name="line.310"></a>
+<span class="sourceLineNo">311</span> * # try a random port.</cc><a name="line.311"></a>
+<span class="sourceLineNo">312</span> * <ck>port</ck> = 10000<a name="line.312"></a>
+<span class="sourceLineNo">313</span> *<a name="line.313"></a>
+<span class="sourceLineNo">314</span> * <cc># The context root of the Jetty server.<a name="line.314"></a>
+<span class="sourceLineNo">315</span> * # Default is Rest-ContextPath in manifest file, or "/".</cc><a name="line.315"></a>
+<span class="sourceLineNo">316</span> * <ck>contextPath</ck> =<a name="line.316"></a>
+<span class="sourceLineNo">317</span> *<a name="line.317"></a>
+<span class="sourceLineNo">318</span> * <cc># Enable SSL support.</cc><a name="line.318"></a>
+<span class="sourceLineNo">319</span> * <ck>useSsl</ck> = false<a name="line.319"></a>
+<span class="sourceLineNo">320</span> *<a name="line.320"></a>
+<span class="sourceLineNo">321</span> * @return The newly-created server.<a name="line.321"></a>
+<span class="sourceLineNo">322</span> * @throws Exception<a name="line.322"></a>
+<span class="sourceLineNo">323</span> */<a name="line.323"></a>
+<span class="sourceLineNo">324</span> protected Server createServer() throws Exception {<a name="line.324"></a>
+<span class="sourceLineNo">325</span> onCreateServer();<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span> ConfigFile cf = getConfig();<a name="line.327"></a>
+<span class="sourceLineNo">328</span> ObjectMap mf = getManifest();<a name="line.328"></a>
+<span class="sourceLineNo">329</span> if (jettyXml == null)<a name="line.329"></a>
+<span class="sourceLineNo">330</span> jettyXml = cf.getString("REST/jettyXml", mf.getString("Rest-JettyXml", null));<a name="line.330"></a>
+<span class="sourceLineNo">331</span> if (jettyXml != null) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span> InputStream is = null;<a name="line.332"></a>
+<span class="sourceLineNo">333</span> if (jettyXml instanceof String) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span> jettyXml = new File(jettyXml.toString());<a name="line.334"></a>
+<span class="sourceLineNo">335</span> }<a name="line.335"></a>
+<span class="sourceLineNo">336</span> if (jettyXml instanceof File) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span> File f = (File)jettyXml;<a name="line.337"></a>
+<span class="sourceLineNo">338</span> if (f.exists())<a name="line.338"></a>
+<span class="sourceLineNo">339</span> is = new FileInputStream((File)jettyXml);<a name="line.339"></a>
+<span class="sourceLineNo">340</span> else <a name="line.340"></a>
+<span class="sourceLineNo">341</span> throw new FormattedRuntimeException("Jetty.xml file ''{0}'' was specified but not found on the file system.", jettyXml);<a name="line.341"></a>
+<span class="sourceLineNo">342</span> } else if (jettyXml instanceof InputStream) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span> is = (InputStream)jettyXml;<a name="line.343"></a>
+<span class="sourceLineNo">344</span> }<a name="line.344"></a>
+<span class="sourceLineNo">345</span> <a name="line.345"></a>
+<span class="sourceLineNo">346</span> XmlConfiguration config = new XmlConfiguration(is);<a name="line.346"></a>
+<span class="sourceLineNo">347</span> server = (Server)config.configure();<a name="line.347"></a>
+<span class="sourceLineNo">348</span> <a name="line.348"></a>
+<span class="sourceLineNo">349</span> } else {<a name="line.349"></a>
+<span class="sourceLineNo">350</span> int[] ports = cf.getObjectWithDefault("REST/port", mf.get(int[].class, "Rest-Port", new int[]{8000}), int[].class);<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span> port = findOpenPort(ports);<a name="line.352"></a>
+<span class="sourceLineNo">353</span> if (port == 0) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span> System.err.println("Open port not found. Tried " + JsonSerializer.DEFAULT_LAX.toString(ports));<a name="line.354"></a>
+<span class="sourceLineNo">355</span> System.exit(1);<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> contextPath = cf.getString("REST/contextPath", mf.getString("Rest-ContextPath", "/"));<a name="line.358"></a>
+<span class="sourceLineNo">359</span> server = new Server(port);<a name="line.359"></a>
+<span class="sourceLineNo">360</span> <a name="line.360"></a>
+<span class="sourceLineNo">361</span> servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span> servletContextHandler.setContextPath(contextPath);<a name="line.363"></a>
+<span class="sourceLineNo">364</span> server.setHandler(servletContextHandler);<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span> for (Map.Entry<String,Class<? extends Servlet>> e : getResourceMap().entrySet())<a name="line.366"></a>
+<span class="sourceLineNo">367</span> servletContextHandler.addServlet(e.getValue(), e.getKey()).setInitOrder(0);<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> return server;<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> /**<a name="line.373"></a>
+<span class="sourceLineNo">374</span> * Adds an arbitrary servlet to this microservice.<a name="line.374"></a>
+<span class="sourceLineNo">375</span> * <a name="line.375"></a>
+<span class="sourceLineNo">376</span> * @param servlet The servlet instance.<a name="line.376"></a>
+<span class="sourceLineNo">377</span> * @param pathSpec The context path of the servlet.<a name="line.377"></a>
+<span class="sourceLineNo">378</span> * @return This object (for method chaining).<a name="line.378"></a>
+<span class="sourceLineNo">379</span> * @throws RuntimeException if {@link #createServer()} has not previously been called.<a name="line.379"></a>
+<span class="sourceLineNo">380</span> */<a name="line.380"></a>
+<span class="sourceLineNo">381</span> public RestMicroservice addServlet(Servlet servlet, String pathSpec) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span> if (servletContextHandler == null)<a name="line.382"></a>
+<span class="sourceLineNo">383</span> throw new RuntimeException("Servlet context handler not found. createServer() must be called first.");<a name="line.383"></a>
+<span class="sourceLineNo">384</span> ServletHolder sh = new ServletHolder(servlet);<a name="line.384"></a>
+<span class="sourceLineNo">385</span> servletContextHandler.addServlet(sh, pathSpec);<a name="line.385"></a>
+<span class="sourceLineNo">386</span> return this;<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> * Adds a servlet attribute to the Jetty server.<a name="line.390"></a>
+<span class="sourceLineNo">391</span> * <a name="line.391"></a>
+<span class="sourceLineNo">392</span> * @param name The server attribute name.<a name="line.392"></a>
+<span class="sourceLineNo">393</span> * @param value The context path of the servlet.<a name="line.393"></a>
+<span class="sourceLineNo">394</span> * @return This object (for method chaining).<a name="line.394"></a>
+<span class="sourceLineNo">395</span> * @throws RuntimeException if {@link #createServer()} has not previously been called.<a name="line.395"></a>
+<span class="sourceLineNo">396</span> */<a name="line.396"></a>
+<span class="sourceLineNo">397</span> public RestMicroservice addServletAttribute(String name, Object value) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span> if (server == null)<a name="line.398"></a>
+<span class="sourceLineNo">399</span> throw new RuntimeException("Server not found. createServer() must be called first.");<a name="line.399"></a>
+<span class="sourceLineNo">400</span> server.setAttribute(name, value);<a name="line.400"></a>
+<span class="sourceLineNo">401</span> return this;<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> /**<a name="line.404"></a>
+<span class="sourceLineNo">405</span> * Returns the underlying Jetty server.<a name="line.405"></a>
+<span class="sourceLineNo">406</span> * <a name="line.406"></a>
+<span class="sourceLineNo">407</span> * @return The underlying Jetty server, or <jk>null</jk> if {@link #createServer()} has not yet been called.<a name="line.407"></a>
+<span class="sourceLineNo">408</span> */<a name="line.408"></a>
+<span class="sourceLineNo">409</span> public Server getServer() {<a name="line.409"></a>
+<span class="sourceLineNo">410</span> return server;<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> private static int findOpenPort(int[] ports) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span> for (int port : ports) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span> try {<a name="line.415"></a>
+<span class="sourceLineNo">416</span> // If port is 0, try a random port between ports[0] and 32767.<a name="line.416"></a>
+<span class="sourceLineNo">417</span> if (port == 0)<a name="line.417"></a>
+<span class="sourceLineNo">418</span> port = new Random().nextInt(32767 - ports[0] + 1) + ports[0];<a name="line.418"></a>
+<span class="sourceLineNo">419</span> ServerSocket ss = new ServerSocket(port);<a name="line.419"></a>
+<span class="sourceLineNo">420</span> ss.close();<a name="line.420"></a>
+<span class="sourceLineNo">421</span> return port;<a name="line.421"></a>
+<span class="sourceLineNo">422</span> } catch (IOException e) {}<a name="line.422"></a>
+<span class="sourceLineNo">423</span> }<a name="line.423"></a>
+<span class="sourceLineNo">424</span> return 0;<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> /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span> * Method used to start the Jetty server created by {@link #createServer()}.<a name="line.428"></a>
+<span class="sourceLineNo">429</span> * <a name="line.429"></a>
+<span class="sourceLineNo">430</span> * <p><a name="line.430"></a>
+<span class="sourceLineNo">431</span> * Subclasses can override this method to customize server startup.<a name="line.431"></a>
+<span class="sourceLineNo">432</span> *<a name="line.432"></a>
+<span class="sourceLineNo">433</span> * @return The port that this server started on.<a name="line.433"></a>
+<span class="sourceLineNo">434</span> * @throws Exception<a name="line.434"></a>
<span class="sourceLineNo">435</span> */<a name="line.435"></a>
-<span class="sourceLineNo">436</span> public RestMicroservice addServletAttribute(String name, Object value) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span> if (server == null)<a name="line.437"></a>
-<span class="sourceLineNo">438</span> throw new RuntimeException("Server not found. createServer() must be called first.");<a name="line.438"></a>
-<span class="sourceLineNo">439</span> server.setAttribute(name, value);<a name="line.439"></a>
-<span class="sourceLineNo">440</span> return this;<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> /**<a name="line.443"></a>
-<span class="sourceLineNo">444</span> * Returns the underlying Jetty server.<a name="line.444"></a>
-<span class="sourceLineNo">445</span> * <a name="line.445"></a>
-<span class="sourceLineNo">446</span> * @return The underlying Jetty server, or <jk>null</jk> if {@link #createServer()} has not yet been called.<a name="line.446"></a>
-<span class="sourceLineNo">447</span> */<a name="line.447"></a>
-<span class="sourceLineNo">448</span> public Server getServer() {<a name="line.448"></a>
-<span class="sourceLineNo">449</span> return server;<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> /**<a name="line.452"></a>
-<span class="sourceLineNo">453</span> * Returns the underlying servlet context handler.<a name="line.453"></a>
-<span class="sourceLineNo">454</span> * <a name="line.454"></a>
-<span class="sourceLineNo">455</span> * @return The underlying servlet context handler, or <jk>null</jk> if {@link #createServer()} has not yet been called.<a name="line.455"></a>
-<span class="sourceLineNo">456</span> */<a name="line.456"></a>
-<span class="sourceLineNo">457</span> public ServletContextHandler getServletContextHandler() {<a name="line.457"></a>
-<span class="sourceLineNo">458</span> return servletContextHandler;<a name="line.458"></a>
-<span class="sourceLineNo">459</span> }<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span> private static int findOpenPort(int[] ports) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span> for (int port : ports) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span> try {<a name="line.463"></a>
-<span class="sourceLineNo">464</span> // If port is 0, try a random port between ports[0] and 32767.<a name="line.464"></a>
-<span class="sourceLineNo">465</span> if (port == 0)<a name="line.465"></a>
-<span class="sourceLineNo">466</span> port = new Random().nextInt(32767 - ports[0] + 1) + ports[0];<a name="line.466"></a>
-<span class="sourceLineNo">467</span> ServerSocket ss = new ServerSocket(port);<a name="line.467"></a>
-<span class="sourceLineNo">468</span> ss.close();<a name="line.468"></a>
-<span class="sourceLineNo">469</span> return port;<a name="line.469"></a>
-<span class="sourceLineNo">470</span> } catch (IOException e) {}<a name="line.470"></a>
-<span class="sourceLineNo">471</span> }<a name="line.471"></a>
-<span class="sourceLineNo">472</span> return 0;<a name="line.472"></a>
-<span class="sourceLineNo">473</span> }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span> /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span> * Method used to start the Jetty server created by {@link #createServer()}.<a name="line.476"></a>
+<span class="sourceLineNo">436</span> protected int startServer() throws Exception {<a name="line.436"></a>
+<span class="sourceLineNo">437</span> onStartServer();<a name="line.437"></a>
+<span class="sourceLineNo">438</span> server.start();<a name="line.438"></a>
+<span class="sourceLineNo">439</span> this.port = ((ServerConnector)server.getConnectors()[0]).getLocalPort();<a name="line.439"></a>
+<span class="sourceLineNo">440</span> logger.warning("Server started on port " + port);<a name="line.440"></a>
+<span class="sourceLineNo">441</span> onPostStartServer();<a name="line.441"></a>
+<span class="sourceLineNo">442</span> return port;<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> /**<a name="line.445"></a>
+<span class="sourceLineNo">446</span> * Returns the resource map to use for this microservice.<a name="line.446"></a>
+<span class="sourceLineNo">447</span> * <a name="line.447"></a>
+<span class="sourceLineNo">448</span> * <p><a name="line.448"></a>
+<span class="sourceLineNo">449</span> * Subclasses can override this method to programmatically specify their resources.<a name="line.449"></a>
+<span class="sourceLineNo">450</span> * <a name="line.450"></a>
+<span class="sourceLineNo">451</span> * <p><a name="line.451"></a>
+<span class="sourceLineNo">452</span> * The default implementation is configured by the following values in the config file:<a name="line.452"></a>
+<span class="sourceLineNo">453</span> * <p class='bcode'><a name="line.453"></a>
+<span class="sourceLineNo">454</span> *<a name="line.454"></a>
+<span class="sourceLineNo">455</span> *
<TRUNCATED>
[14/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.ClassComparator.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.ClassComparator.html b/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.ClassComparator.html
index b68325a..6207b05 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.ClassComparator.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.ClassComparator.html
@@ -841,175 +841,279 @@
<span class="sourceLineNo">833</span> /**<a name="line.833"></a>
<span class="sourceLineNo">834</span> * Returns all the fields in the specified class and all parent classes.<a name="line.834"></a>
<span class="sourceLineNo">835</span> *<a name="line.835"></a>
-<span class="sourceLineNo">836</span> * @param c The class to get all fields on.<a name="line.836"></a>
-<span class="sourceLineNo">837</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.837"></a>
-<span class="sourceLineNo">838</span> * @return An iterable of all fields in the specified class.<a name="line.838"></a>
-<span class="sourceLineNo">839</span> */<a name="line.839"></a>
-<span class="sourceLineNo">840</span> @SuppressWarnings("rawtypes")<a name="line.840"></a>
-<span class="sourceLineNo">841</span> public static Iterable<Field> getAllFields(final Class c, final boolean parentFirst) {<a name="line.841"></a>
-<span class="sourceLineNo">842</span> return new Iterable<Field>() {<a name="line.842"></a>
-<span class="sourceLineNo">843</span> @Override<a name="line.843"></a>
-<span class="sourceLineNo">844</span> public Iterator<Field> iterator() {<a name="line.844"></a>
-<span class="sourceLineNo">845</span> return new Iterator<Field>(){<a name="line.845"></a>
-<span class="sourceLineNo">846</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, false);<a name="line.846"></a>
-<span class="sourceLineNo">847</span> Field[] fields = classIterator.hasNext() ? classIterator.next().getDeclaredFields() : new Field[0];<a name="line.847"></a>
-<span class="sourceLineNo">848</span> int fIndex = 0;<a name="line.848"></a>
-<span class="sourceLineNo">849</span> Field next;<a name="line.849"></a>
-<span class="sourceLineNo">850</span><a name="line.850"></a>
-<span class="sourceLineNo">851</span> @Override<a name="line.851"></a>
-<span class="sourceLineNo">852</span> public boolean hasNext() {<a name="line.852"></a>
-<span class="sourceLineNo">853</span> prime();<a name="line.853"></a>
-<span class="sourceLineNo">854</span> return next != null;<a name="line.854"></a>
-<span class="sourceLineNo">855</span> }<a name="line.855"></a>
-<span class="sourceLineNo">856</span><a name="line.856"></a>
-<span class="sourceLineNo">857</span> private void prime() {<a name="line.857"></a>
-<span class="sourceLineNo">858</span> if (next == null) {<a name="line.858"></a>
-<span class="sourceLineNo">859</span> while (fIndex >= fields.length) {<a name="line.859"></a>
-<span class="sourceLineNo">860</span> if (classIterator.hasNext()) {<a name="line.860"></a>
-<span class="sourceLineNo">861</span> fields = classIterator.next().getDeclaredFields();<a name="line.861"></a>
-<span class="sourceLineNo">862</span> fIndex = 0;<a name="line.862"></a>
-<span class="sourceLineNo">863</span> } else {<a name="line.863"></a>
-<span class="sourceLineNo">864</span> fIndex = -1;<a name="line.864"></a>
-<span class="sourceLineNo">865</span> }<a name="line.865"></a>
-<span class="sourceLineNo">866</span> }<a name="line.866"></a>
-<span class="sourceLineNo">867</span> if (fIndex != -1)<a name="line.867"></a>
-<span class="sourceLineNo">868</span> next = fields[fIndex++];<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><a name="line.871"></a>
-<span class="sourceLineNo">872</span> @Override<a name="line.872"></a>
-<span class="sourceLineNo">873</span> public Field next() {<a name="line.873"></a>
-<span class="sourceLineNo">874</span> prime();<a name="line.874"></a>
-<span class="sourceLineNo">875</span> Field f = next;<a name="line.875"></a>
-<span class="sourceLineNo">876</span> next = null;<a name="line.876"></a>
-<span class="sourceLineNo">877</span> return f;<a name="line.877"></a>
-<span class="sourceLineNo">878</span> }<a name="line.878"></a>
-<span class="sourceLineNo">879</span><a name="line.879"></a>
-<span class="sourceLineNo">880</span> @Override<a name="line.880"></a>
-<span class="sourceLineNo">881</span> public void remove() {<a name="line.881"></a>
-<span class="sourceLineNo">882</span> }<a name="line.882"></a>
-<span class="sourceLineNo">883</span> };<a name="line.883"></a>
-<span class="sourceLineNo">884</span> }<a name="line.884"></a>
-<span class="sourceLineNo">885</span> };<a name="line.885"></a>
-<span class="sourceLineNo">886</span> }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span> /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span> * Returns all the methods in the specified class and all parent classes.<a name="line.889"></a>
-<span class="sourceLineNo">890</span> *<a name="line.890"></a>
-<span class="sourceLineNo">891</span> * @param c The class to get all methods on.<a name="line.891"></a>
-<span class="sourceLineNo">892</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.892"></a>
-<span class="sourceLineNo">893</span> * @return An iterable of all methods in the specified class.<a name="line.893"></a>
-<span class="sourceLineNo">894</span> */<a name="line.894"></a>
-<span class="sourceLineNo">895</span> @SuppressWarnings("rawtypes")<a name="line.895"></a>
-<span class="sourceLineNo">896</span> public static Iterable<Method> getAllMethods(final Class c, final boolean parentFirst) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span> return new Iterable<Method>() {<a name="line.897"></a>
-<span class="sourceLineNo">898</span> @Override<a name="line.898"></a>
-<span class="sourceLineNo">899</span> public Iterator<Method> iterator() {<a name="line.899"></a>
-<span class="sourceLineNo">900</span> return new Iterator<Method>(){<a name="line.900"></a>
-<span class="sourceLineNo">901</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, true);<a name="line.901"></a>
-<span class="sourceLineNo">902</span> Method[] methods = classIterator.hasNext() ? classIterator.next().getDeclaredMethods() : new Method[0];<a name="line.902"></a>
-<span class="sourceLineNo">903</span> int mIndex = 0;<a name="line.903"></a>
-<span class="sourceLineNo">904</span> Method next;<a name="line.904"></a>
-<span class="sourceLineNo">905</span><a name="line.905"></a>
-<span class="sourceLineNo">906</span> @Override<a name="line.906"></a>
-<span class="sourceLineNo">907</span> public boolean hasNext() {<a name="line.907"></a>
-<span class="sourceLineNo">908</span> prime();<a name="line.908"></a>
-<span class="sourceLineNo">909</span> return next != null;<a name="line.909"></a>
-<span class="sourceLineNo">910</span> }<a name="line.910"></a>
+<span class="sourceLineNo">836</span> * <p><a name="line.836"></a>
+<span class="sourceLineNo">837</span> * Fields are ordered in either parent-to-child, or child-to-parent order, then alphabetically.<a name="line.837"></a>
+<span class="sourceLineNo">838</span> *<a name="line.838"></a>
+<span class="sourceLineNo">839</span> * @param c The class to get all fields on.<a name="line.839"></a>
+<span class="sourceLineNo">840</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.840"></a>
+<span class="sourceLineNo">841</span> * @return An iterable of all fields in the specified class.<a name="line.841"></a>
+<span class="sourceLineNo">842</span> */<a name="line.842"></a>
+<span class="sourceLineNo">843</span> @SuppressWarnings("rawtypes")<a name="line.843"></a>
+<span class="sourceLineNo">844</span> public static Iterable<Field> getAllFields(final Class c, final boolean parentFirst) {<a name="line.844"></a>
+<span class="sourceLineNo">845</span> return new Iterable<Field>() {<a name="line.845"></a>
+<span class="sourceLineNo">846</span> @Override<a name="line.846"></a>
+<span class="sourceLineNo">847</span> public Iterator<Field> iterator() {<a name="line.847"></a>
+<span class="sourceLineNo">848</span> return new Iterator<Field>(){<a name="line.848"></a>
+<span class="sourceLineNo">849</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, false);<a name="line.849"></a>
+<span class="sourceLineNo">850</span> Field[] fields = classIterator.hasNext() ? sort(classIterator.next().getDeclaredFields()) : new Field[0];<a name="line.850"></a>
+<span class="sourceLineNo">851</span> int fIndex = 0;<a name="line.851"></a>
+<span class="sourceLineNo">852</span> Field next;<a name="line.852"></a>
+<span class="sourceLineNo">853</span><a name="line.853"></a>
+<span class="sourceLineNo">854</span> @Override<a name="line.854"></a>
+<span class="sourceLineNo">855</span> public boolean hasNext() {<a name="line.855"></a>
+<span class="sourceLineNo">856</span> prime();<a name="line.856"></a>
+<span class="sourceLineNo">857</span> return next != null;<a name="line.857"></a>
+<span class="sourceLineNo">858</span> }<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span> private void prime() {<a name="line.860"></a>
+<span class="sourceLineNo">861</span> if (next == null) {<a name="line.861"></a>
+<span class="sourceLineNo">862</span> while (fIndex >= fields.length) {<a name="line.862"></a>
+<span class="sourceLineNo">863</span> if (classIterator.hasNext()) {<a name="line.863"></a>
+<span class="sourceLineNo">864</span> fields = sort(classIterator.next().getDeclaredFields());<a name="line.864"></a>
+<span class="sourceLineNo">865</span> fIndex = 0;<a name="line.865"></a>
+<span class="sourceLineNo">866</span> } else {<a name="line.866"></a>
+<span class="sourceLineNo">867</span> fIndex = -1;<a name="line.867"></a>
+<span class="sourceLineNo">868</span> }<a name="line.868"></a>
+<span class="sourceLineNo">869</span> }<a name="line.869"></a>
+<span class="sourceLineNo">870</span> if (fIndex != -1)<a name="line.870"></a>
+<span class="sourceLineNo">871</span> next = fields[fIndex++];<a name="line.871"></a>
+<span class="sourceLineNo">872</span> }<a name="line.872"></a>
+<span class="sourceLineNo">873</span> }<a name="line.873"></a>
+<span class="sourceLineNo">874</span><a name="line.874"></a>
+<span class="sourceLineNo">875</span> @Override<a name="line.875"></a>
+<span class="sourceLineNo">876</span> public Field next() {<a name="line.876"></a>
+<span class="sourceLineNo">877</span> prime();<a name="line.877"></a>
+<span class="sourceLineNo">878</span> Field f = next;<a name="line.878"></a>
+<span class="sourceLineNo">879</span> next = null;<a name="line.879"></a>
+<span class="sourceLineNo">880</span> return f;<a name="line.880"></a>
+<span class="sourceLineNo">881</span> }<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span> @Override<a name="line.883"></a>
+<span class="sourceLineNo">884</span> public void remove() {<a name="line.884"></a>
+<span class="sourceLineNo">885</span> }<a name="line.885"></a>
+<span class="sourceLineNo">886</span> };<a name="line.886"></a>
+<span class="sourceLineNo">887</span> }<a name="line.887"></a>
+<span class="sourceLineNo">888</span> };<a name="line.888"></a>
+<span class="sourceLineNo">889</span> }<a name="line.889"></a>
+<span class="sourceLineNo">890</span><a name="line.890"></a>
+<span class="sourceLineNo">891</span> /**<a name="line.891"></a>
+<span class="sourceLineNo">892</span> * Returns all the methods in the specified class and all parent classes.<a name="line.892"></a>
+<span class="sourceLineNo">893</span> *<a name="line.893"></a>
+<span class="sourceLineNo">894</span> * <p><a name="line.894"></a>
+<span class="sourceLineNo">895</span> * Methods are ordered in either parent-to-child, or child-to-parent order, then alphabetically.<a name="line.895"></a>
+<span class="sourceLineNo">896</span> *<a name="line.896"></a>
+<span class="sourceLineNo">897</span> * @param c The class to get all methods on.<a name="line.897"></a>
+<span class="sourceLineNo">898</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.898"></a>
+<span class="sourceLineNo">899</span> * @return An iterable of all methods in the specified class.<a name="line.899"></a>
+<span class="sourceLineNo">900</span> */<a name="line.900"></a>
+<span class="sourceLineNo">901</span> @SuppressWarnings("rawtypes")<a name="line.901"></a>
+<span class="sourceLineNo">902</span> public static Iterable<Method> getAllMethods(final Class c, final boolean parentFirst) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span> return new Iterable<Method>() {<a name="line.903"></a>
+<span class="sourceLineNo">904</span> @Override<a name="line.904"></a>
+<span class="sourceLineNo">905</span> public Iterator<Method> iterator() {<a name="line.905"></a>
+<span class="sourceLineNo">906</span> return new Iterator<Method>(){<a name="line.906"></a>
+<span class="sourceLineNo">907</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, true);<a name="line.907"></a>
+<span class="sourceLineNo">908</span> Method[] methods = classIterator.hasNext() ? sort(classIterator.next().getDeclaredMethods()) : new Method[0];<a name="line.908"></a>
+<span class="sourceLineNo">909</span> int mIndex = 0;<a name="line.909"></a>
+<span class="sourceLineNo">910</span> Method next;<a name="line.910"></a>
<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span> private void prime() {<a name="line.912"></a>
-<span class="sourceLineNo">913</span> if (next == null) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span> while (mIndex >= methods.length) {<a name="line.914"></a>
-<span class="sourceLineNo">915</span> if (classIterator.hasNext()) {<a name="line.915"></a>
-<span class="sourceLineNo">916</span> methods = classIterator.next().getDeclaredMethods();<a name="line.916"></a>
-<span class="sourceLineNo">917</span> mIndex = 0;<a name="line.917"></a>
-<span class="sourceLineNo">918</span> } else {<a name="line.918"></a>
-<span class="sourceLineNo">919</span> mIndex = -1;<a name="line.919"></a>
-<span class="sourceLineNo">920</span> }<a name="line.920"></a>
-<span class="sourceLineNo">921</span> }<a name="line.921"></a>
-<span class="sourceLineNo">922</span> if (mIndex != -1)<a name="line.922"></a>
-<span class="sourceLineNo">923</span> next = methods[mIndex++];<a name="line.923"></a>
-<span class="sourceLineNo">924</span> }<a name="line.924"></a>
-<span class="sourceLineNo">925</span> }<a name="line.925"></a>
-<span class="sourceLineNo">926</span><a name="line.926"></a>
-<span class="sourceLineNo">927</span> @Override<a name="line.927"></a>
-<span class="sourceLineNo">928</span> public Method next() {<a name="line.928"></a>
-<span class="sourceLineNo">929</span> prime();<a name="line.929"></a>
-<span class="sourceLineNo">930</span> Method m = next;<a name="line.930"></a>
-<span class="sourceLineNo">931</span> next = null;<a name="line.931"></a>
-<span class="sourceLineNo">932</span> return m;<a name="line.932"></a>
-<span class="sourceLineNo">933</span> }<a name="line.933"></a>
-<span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span> @Override<a name="line.935"></a>
-<span class="sourceLineNo">936</span> public void remove() {<a name="line.936"></a>
-<span class="sourceLineNo">937</span> }<a name="line.937"></a>
-<span class="sourceLineNo">938</span> };<a name="line.938"></a>
-<span class="sourceLineNo">939</span> }<a name="line.939"></a>
-<span class="sourceLineNo">940</span> };<a name="line.940"></a>
-<span class="sourceLineNo">941</span> }<a name="line.941"></a>
-<span class="sourceLineNo">942</span><a name="line.942"></a>
-<span class="sourceLineNo">943</span> /**<a name="line.943"></a>
-<span class="sourceLineNo">944</span> * Returns a list of all the parent classes of the specified class including the class itself.<a name="line.944"></a>
-<span class="sourceLineNo">945</span> *<a name="line.945"></a>
-<span class="sourceLineNo">946</span> * @param c The class to retrieve the parent classes.<a name="line.946"></a>
-<span class="sourceLineNo">947</span> * @param parentFirst In parent-to-child order, otherwise child-to-parent.<a name="line.947"></a>
-<span class="sourceLineNo">948</span> * @param includeInterfaces Include interfaces.<a name="line.948"></a>
-<span class="sourceLineNo">949</span> * @return An iterator of parent classes in the class hierarchy.<a name="line.949"></a>
-<span class="sourceLineNo">950</span> */<a name="line.950"></a>
-<span class="sourceLineNo">951</span> public static Iterator<Class<?>> getParentClasses(final Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span> List<Class<?>> l = getParentClasses(new ArrayList<Class<?>>(), c, parentFirst, includeInterfaces);<a name="line.952"></a>
-<span class="sourceLineNo">953</span> return l.iterator();<a name="line.953"></a>
-<span class="sourceLineNo">954</span> }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span> private static List<Class<?>> getParentClasses(List<Class<?>> l, Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span> if (parentFirst) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span> if (includeInterfaces)<a name="line.958"></a>
-<span class="sourceLineNo">959</span> for (Class<?> i : c.getInterfaces())<a name="line.959"></a>
-<span class="sourceLineNo">960</span> l.add(i);<a name="line.960"></a>
-<span class="sourceLineNo">961</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.961"></a>
-<span class="sourceLineNo">962</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.962"></a>
-<span class="sourceLineNo">963</span> l.add(c);<a name="line.963"></a>
-<span class="sourceLineNo">964</span> } else {<a name="line.964"></a>
-<span class="sourceLineNo">965</span> l.add(c);<a name="line.965"></a>
-<span class="sourceLineNo">966</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.966"></a>
-<span class="sourceLineNo">967</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.967"></a>
-<span class="sourceLineNo">968</span> if (includeInterfaces)<a name="line.968"></a>
-<span class="sourceLineNo">969</span> for (Class<?> i : c.getInterfaces())<a name="line.969"></a>
-<span class="sourceLineNo">970</span> l.add(i);<a name="line.970"></a>
-<span class="sourceLineNo">971</span> }<a name="line.971"></a>
-<span class="sourceLineNo">972</span> return l;<a name="line.972"></a>
-<span class="sourceLineNo">973</span> }<a name="line.973"></a>
-<span class="sourceLineNo">974</span><a name="line.974"></a>
-<span class="sourceLineNo">975</span> /**<a name="line.975"></a>
-<span class="sourceLineNo">976</span> * Returns the default value for the specified primitive class.<a name="line.976"></a>
-<span class="sourceLineNo">977</span> *<a name="line.977"></a>
-<span class="sourceLineNo">978</span> * @param primitiveClass The primitive class to get the default value for.<a name="line.978"></a>
-<span class="sourceLineNo">979</span> * @return The default value, or <jk>null</jk> if the specified class is not a primitive class.<a name="line.979"></a>
-<span class="sourceLineNo">980</span> */<a name="line.980"></a>
-<span class="sourceLineNo">981</span> public static Object getPrimitiveDefault(Class<?> primitiveClass) {<a name="line.981"></a>
-<span class="sourceLineNo">982</span> return primitiveDefaultMap.get(primitiveClass);<a name="line.982"></a>
-<span class="sourceLineNo">983</span> }<a name="line.983"></a>
+<span class="sourceLineNo">912</span> @Override<a name="line.912"></a>
+<span class="sourceLineNo">913</span> public boolean hasNext() {<a name="line.913"></a>
+<span class="sourceLineNo">914</span> prime();<a name="line.914"></a>
+<span class="sourceLineNo">915</span> return next != null;<a name="line.915"></a>
+<span class="sourceLineNo">916</span> }<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span> private void prime() {<a name="line.918"></a>
+<span class="sourceLineNo">919</span> if (next == null) {<a name="line.919"></a>
+<span class="sourceLineNo">920</span> while (mIndex >= methods.length) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span> if (classIterator.hasNext()) {<a name="line.921"></a>
+<span class="sourceLineNo">922</span> methods = sort(classIterator.next().getDeclaredMethods());<a name="line.922"></a>
+<span class="sourceLineNo">923</span> mIndex = 0;<a name="line.923"></a>
+<span class="sourceLineNo">924</span> } else {<a name="line.924"></a>
+<span class="sourceLineNo">925</span> mIndex = -1;<a name="line.925"></a>
+<span class="sourceLineNo">926</span> }<a name="line.926"></a>
+<span class="sourceLineNo">927</span> }<a name="line.927"></a>
+<span class="sourceLineNo">928</span> if (mIndex != -1)<a name="line.928"></a>
+<span class="sourceLineNo">929</span> next = methods[mIndex++];<a name="line.929"></a>
+<span class="sourceLineNo">930</span> }<a name="line.930"></a>
+<span class="sourceLineNo">931</span> }<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span> @Override<a name="line.933"></a>
+<span class="sourceLineNo">934</span> public Method next() {<a name="line.934"></a>
+<span class="sourceLineNo">935</span> prime();<a name="line.935"></a>
+<span class="sourceLineNo">936</span> Method m = next;<a name="line.936"></a>
+<span class="sourceLineNo">937</span> next = null;<a name="line.937"></a>
+<span class="sourceLineNo">938</span> return m;<a name="line.938"></a>
+<span class="sourceLineNo">939</span> }<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span> @Override<a name="line.941"></a>
+<span class="sourceLineNo">942</span> public void remove() {<a name="line.942"></a>
+<span class="sourceLineNo">943</span> }<a name="line.943"></a>
+<span class="sourceLineNo">944</span> };<a name="line.944"></a>
+<span class="sourceLineNo">945</span> }<a name="line.945"></a>
+<span class="sourceLineNo">946</span> };<a name="line.946"></a>
+<span class="sourceLineNo">947</span> }<a name="line.947"></a>
+<span class="sourceLineNo">948</span><a name="line.948"></a>
+<span class="sourceLineNo">949</span> private static Comparator<Method> METHOD_COMPARATOR = new Comparator<Method>() {<a name="line.949"></a>
+<span class="sourceLineNo">950</span><a name="line.950"></a>
+<span class="sourceLineNo">951</span> @Override<a name="line.951"></a>
+<span class="sourceLineNo">952</span> public int compare(Method o1, Method o2) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span> int i = o1.getName().compareTo(o2.getName());<a name="line.953"></a>
+<span class="sourceLineNo">954</span> if (i == 0) {<a name="line.954"></a>
+<span class="sourceLineNo">955</span> i = o1.getParameterCount() - o2.getParameterCount();<a name="line.955"></a>
+<span class="sourceLineNo">956</span> if (i == 0) {<a name="line.956"></a>
+<span class="sourceLineNo">957</span> for (int j = 0; j < o1.getParameterTypes().length && i == 0; j++) {<a name="line.957"></a>
+<span class="sourceLineNo">958</span> i = o1.getParameterTypes()[j].getName().compareTo(o2.getParameterTypes()[j].getName());<a name="line.958"></a>
+<span class="sourceLineNo">959</span> }<a name="line.959"></a>
+<span class="sourceLineNo">960</span> }<a name="line.960"></a>
+<span class="sourceLineNo">961</span> }<a name="line.961"></a>
+<span class="sourceLineNo">962</span> return i;<a name="line.962"></a>
+<span class="sourceLineNo">963</span> }<a name="line.963"></a>
+<span class="sourceLineNo">964</span> };<a name="line.964"></a>
+<span class="sourceLineNo">965</span><a name="line.965"></a>
+<span class="sourceLineNo">966</span> /**<a name="line.966"></a>
+<span class="sourceLineNo">967</span> * Sorts methods in alphabetical order.<a name="line.967"></a>
+<span class="sourceLineNo">968</span> *<a name="line.968"></a>
+<span class="sourceLineNo">969</span> * @param m The methods to sort.<a name="line.969"></a>
+<span class="sourceLineNo">970</span> * @return The same array, but with elements sorted.<a name="line.970"></a>
+<span class="sourceLineNo">971</span> */<a name="line.971"></a>
+<span class="sourceLineNo">972</span> public static Method[] sort(Method[] m) {<a name="line.972"></a>
+<span class="sourceLineNo">973</span> Arrays.sort(m, METHOD_COMPARATOR);<a name="line.973"></a>
+<span class="sourceLineNo">974</span> return m;<a name="line.974"></a>
+<span class="sourceLineNo">975</span> }<a name="line.975"></a>
+<span class="sourceLineNo">976</span><a name="line.976"></a>
+<span class="sourceLineNo">977</span> private static Comparator<Field> FIELD_COMPARATOR = new Comparator<Field>() {<a name="line.977"></a>
+<span class="sourceLineNo">978</span><a name="line.978"></a>
+<span class="sourceLineNo">979</span> @Override<a name="line.979"></a>
+<span class="sourceLineNo">980</span> public int compare(Field o1, Field o2) {<a name="line.980"></a>
+<span class="sourceLineNo">981</span> return o1.getName().compareTo(o2.getName());<a name="line.981"></a>
+<span class="sourceLineNo">982</span> }<a name="line.982"></a>
+<span class="sourceLineNo">983</span> };<a name="line.983"></a>
<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span> private static final Map<Class<?>,Object> primitiveDefaultMap = Collections.unmodifiableMap(<a name="line.985"></a>
-<span class="sourceLineNo">986</span> new AMap<Class<?>,Object>()<a name="line.986"></a>
-<span class="sourceLineNo">987</span> .append(Boolean.TYPE, false)<a name="line.987"></a>
-<span class="sourceLineNo">988</span> .append(Character.TYPE, (char)0)<a name="line.988"></a>
-<span class="sourceLineNo">989</span> .append(Short.TYPE, (short)0)<a name="line.989"></a>
-<span class="sourceLineNo">990</span> .append(Integer.TYPE, 0)<a name="line.990"></a>
-<span class="sourceLineNo">991</span> .append(Long.TYPE, 0l)<a name="line.991"></a>
-<span class="sourceLineNo">992</span> .append(Float.TYPE, 0f)<a name="line.992"></a>
-<span class="sourceLineNo">993</span> .append(Double.TYPE, 0d)<a name="line.993"></a>
-<span class="sourceLineNo">994</span> .append(Byte.TYPE, (byte)0)<a name="line.994"></a>
-<span class="sourceLineNo">995</span> .append(Boolean.class, false)<a name="line.995"></a>
-<span class="sourceLineNo">996</span> .append(Character.class, (char)0)<a name="line.996"></a>
-<span class="sourceLineNo">997</span> .append(Short.class, (short)0)<a name="line.997"></a>
-<span class="sourceLineNo">998</span> .append(Integer.class, 0)<a name="line.998"></a>
-<span class="sourceLineNo">999</span> .append(Long.class, 0l)<a name="line.999"></a>
-<span class="sourceLineNo">1000</span> .append(Float.class, 0f)<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span> .append(Double.class, 0d)<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span> .append(Byte.class, (byte)0)<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span> );<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>}<a name="line.1004"></a>
+<span class="sourceLineNo">985</span> /**<a name="line.985"></a>
+<span class="sourceLineNo">986</span> * Sorts methods in alphabetical order.<a name="line.986"></a>
+<span class="sourceLineNo">987</span> *<a name="line.987"></a>
+<span class="sourceLineNo">988</span> * @param m The methods to sort.<a name="line.988"></a>
+<span class="sourceLineNo">989</span> * @return The same array, but with elements sorted.<a name="line.989"></a>
+<span class="sourceLineNo">990</span> */<a name="line.990"></a>
+<span class="sourceLineNo">991</span> public static Field[] sort(Field[] m) {<a name="line.991"></a>
+<span class="sourceLineNo">992</span> Arrays.sort(m, FIELD_COMPARATOR);<a name="line.992"></a>
+<span class="sourceLineNo">993</span> return m;<a name="line.993"></a>
+<span class="sourceLineNo">994</span> }<a name="line.994"></a>
+<span class="sourceLineNo">995</span><a name="line.995"></a>
+<span class="sourceLineNo">996</span> /**<a name="line.996"></a>
+<span class="sourceLineNo">997</span> * Returns a list of all the parent classes of the specified class including the class itself.<a name="line.997"></a>
+<span class="sourceLineNo">998</span> *<a name="line.998"></a>
+<span class="sourceLineNo">999</span> * @param c The class to retrieve the parent classes.<a name="line.999"></a>
+<span class="sourceLineNo">1000</span> * @param parentFirst In parent-to-child order, otherwise child-to-parent.<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span> * @param includeInterfaces Include interfaces.<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span> * @return An iterator of parent classes in the class hierarchy.<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span> */<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span> public static Iterator<Class<?>> getParentClasses(final Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span> List<Class<?>> l = getParentClasses(new ArrayList<Class<?>>(), c, parentFirst, includeInterfaces);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span> return l.iterator();<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span> }<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span><a name="line.1008"></a>
+<span class="sourceLineNo">1009</span> private static List<Class<?>> getParentClasses(List<Class<?>> l, Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span> if (parentFirst) {<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span> if (includeInterfaces)<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span> for (Class<?> i : c.getInterfaces())<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span> l.add(i);<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span> l.add(c);<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span> } else {<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span> l.add(c);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span> if (includeInterfaces)<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span> for (Class<?> i : c.getInterfaces())<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span> l.add(i);<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span> }<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span> return l;<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span> }<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span><a name="line.1027"></a>
+<span class="sourceLineNo">1028</span> /**<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span> * Returns the default value for the specified primitive class.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span> *<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span> * @param primitiveClass The primitive class to get the default value for.<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span> * @return The default value, or <jk>null</jk> if the specified class is not a primitive class.<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span> */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span> public static Object getPrimitiveDefault(Class<?> primitiveClass) {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span> return primitiveDefaultMap.get(primitiveClass);<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span> }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span> private static final Map<Class<?>,Object> primitiveDefaultMap = Collections.unmodifiableMap(<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span> new AMap<Class<?>,Object>()<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span> .append(Boolean.TYPE, false)<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span> .append(Character.TYPE, (char)0)<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span> .append(Short.TYPE, (short)0)<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span> .append(Integer.TYPE, 0)<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span> .append(Long.TYPE, 0l)<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span> .append(Float.TYPE, 0f)<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span> .append(Double.TYPE, 0d)<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span> .append(Byte.TYPE, (byte)0)<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span> .append(Boolean.class, false)<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span> .append(Character.class, (char)0)<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span> .append(Short.class, (short)0)<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span> .append(Integer.class, 0)<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span> .append(Long.class, 0l)<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span> .append(Float.class, 0f)<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span> .append(Double.class, 0d)<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span> .append(Byte.class, (byte)0)<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span> );<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span><a name="line.1057"></a>
+<span class="sourceLineNo">1058</span> /**<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span> * Returns a readable representation of the specified method.<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span> *<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span> * <p><a name="line.1061"></a>
+<span class="sourceLineNo">1062</span> * The format of the string is <js>"full-qualified-class.method-name(parameter-simple-class-names)"</js>.<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span> *<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span> * @param m The method to stringify.<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span> * @return The stringified method.<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span> */<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span> public static String toString(Method m) {<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span> StringBuilder sb = new StringBuilder(m.getDeclaringClass().getName() + "." + m.getName() + "(");<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span> for (int i = 0; i < m.getParameterCount(); i++) {<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span> if (i > 0)<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span> sb.append(",");<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span> sb.append(m.getParameterTypes()[i].getSimpleName());<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span> }<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span> sb.append(")");<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span> return sb.toString();<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span> }<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span><a name="line.1077"></a>
+<span class="sourceLineNo">1078</span> /**<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span> * Returns a readable representation of the specified field.<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span> *<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span> * <p><a name="line.1081"></a>
+<span class="sourceLineNo">1082</span> * The format of the string is <js>"full-qualified-class.field-name"</js>.<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span> *<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span> * @param f The field to stringify.<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span> * @return The stringified field.<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span> */<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span> public static String toString(Field f) {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span> return f.getDeclaringClass().getName() + "." + f.getName();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span> }<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span><a name="line.1090"></a>
+<span class="sourceLineNo">1091</span> /**<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span> * Throws an {@link IllegalArgumentException} if the parameters on the method are not in the specified list provided.<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span> *<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span> * @param m The method to test.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span> * @param args The valid class types (exact) for the arguments.<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span> * @throws FormattedIllegalArgumentException If any of the parameters on the method weren't in the list.<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span> */<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span> public static void assertArgsOfType(Method m, Class<?>...args) throws FormattedIllegalArgumentException {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span> for (Class<?> c1 : m.getParameterTypes()) {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span> boolean foundMatch = false;<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span> for (Class<?> c2 : args)<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span> if (c1 == c2)<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span> foundMatch = true;<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span> if (! foundMatch)<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span> throw new FormattedIllegalArgumentException("Invalid argument of type {0} passed in method {1}. Only arguments of type {2} are allowed.", c1, m, args);<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span> }<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span> }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>}<a name="line.1108"></a>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.MethodInfo.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.MethodInfo.html b/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.MethodInfo.html
index b68325a..6207b05 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.MethodInfo.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/internal/ClassUtils.MethodInfo.html
@@ -841,175 +841,279 @@
<span class="sourceLineNo">833</span> /**<a name="line.833"></a>
<span class="sourceLineNo">834</span> * Returns all the fields in the specified class and all parent classes.<a name="line.834"></a>
<span class="sourceLineNo">835</span> *<a name="line.835"></a>
-<span class="sourceLineNo">836</span> * @param c The class to get all fields on.<a name="line.836"></a>
-<span class="sourceLineNo">837</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.837"></a>
-<span class="sourceLineNo">838</span> * @return An iterable of all fields in the specified class.<a name="line.838"></a>
-<span class="sourceLineNo">839</span> */<a name="line.839"></a>
-<span class="sourceLineNo">840</span> @SuppressWarnings("rawtypes")<a name="line.840"></a>
-<span class="sourceLineNo">841</span> public static Iterable<Field> getAllFields(final Class c, final boolean parentFirst) {<a name="line.841"></a>
-<span class="sourceLineNo">842</span> return new Iterable<Field>() {<a name="line.842"></a>
-<span class="sourceLineNo">843</span> @Override<a name="line.843"></a>
-<span class="sourceLineNo">844</span> public Iterator<Field> iterator() {<a name="line.844"></a>
-<span class="sourceLineNo">845</span> return new Iterator<Field>(){<a name="line.845"></a>
-<span class="sourceLineNo">846</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, false);<a name="line.846"></a>
-<span class="sourceLineNo">847</span> Field[] fields = classIterator.hasNext() ? classIterator.next().getDeclaredFields() : new Field[0];<a name="line.847"></a>
-<span class="sourceLineNo">848</span> int fIndex = 0;<a name="line.848"></a>
-<span class="sourceLineNo">849</span> Field next;<a name="line.849"></a>
-<span class="sourceLineNo">850</span><a name="line.850"></a>
-<span class="sourceLineNo">851</span> @Override<a name="line.851"></a>
-<span class="sourceLineNo">852</span> public boolean hasNext() {<a name="line.852"></a>
-<span class="sourceLineNo">853</span> prime();<a name="line.853"></a>
-<span class="sourceLineNo">854</span> return next != null;<a name="line.854"></a>
-<span class="sourceLineNo">855</span> }<a name="line.855"></a>
-<span class="sourceLineNo">856</span><a name="line.856"></a>
-<span class="sourceLineNo">857</span> private void prime() {<a name="line.857"></a>
-<span class="sourceLineNo">858</span> if (next == null) {<a name="line.858"></a>
-<span class="sourceLineNo">859</span> while (fIndex >= fields.length) {<a name="line.859"></a>
-<span class="sourceLineNo">860</span> if (classIterator.hasNext()) {<a name="line.860"></a>
-<span class="sourceLineNo">861</span> fields = classIterator.next().getDeclaredFields();<a name="line.861"></a>
-<span class="sourceLineNo">862</span> fIndex = 0;<a name="line.862"></a>
-<span class="sourceLineNo">863</span> } else {<a name="line.863"></a>
-<span class="sourceLineNo">864</span> fIndex = -1;<a name="line.864"></a>
-<span class="sourceLineNo">865</span> }<a name="line.865"></a>
-<span class="sourceLineNo">866</span> }<a name="line.866"></a>
-<span class="sourceLineNo">867</span> if (fIndex != -1)<a name="line.867"></a>
-<span class="sourceLineNo">868</span> next = fields[fIndex++];<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><a name="line.871"></a>
-<span class="sourceLineNo">872</span> @Override<a name="line.872"></a>
-<span class="sourceLineNo">873</span> public Field next() {<a name="line.873"></a>
-<span class="sourceLineNo">874</span> prime();<a name="line.874"></a>
-<span class="sourceLineNo">875</span> Field f = next;<a name="line.875"></a>
-<span class="sourceLineNo">876</span> next = null;<a name="line.876"></a>
-<span class="sourceLineNo">877</span> return f;<a name="line.877"></a>
-<span class="sourceLineNo">878</span> }<a name="line.878"></a>
-<span class="sourceLineNo">879</span><a name="line.879"></a>
-<span class="sourceLineNo">880</span> @Override<a name="line.880"></a>
-<span class="sourceLineNo">881</span> public void remove() {<a name="line.881"></a>
-<span class="sourceLineNo">882</span> }<a name="line.882"></a>
-<span class="sourceLineNo">883</span> };<a name="line.883"></a>
-<span class="sourceLineNo">884</span> }<a name="line.884"></a>
-<span class="sourceLineNo">885</span> };<a name="line.885"></a>
-<span class="sourceLineNo">886</span> }<a name="line.886"></a>
-<span class="sourceLineNo">887</span><a name="line.887"></a>
-<span class="sourceLineNo">888</span> /**<a name="line.888"></a>
-<span class="sourceLineNo">889</span> * Returns all the methods in the specified class and all parent classes.<a name="line.889"></a>
-<span class="sourceLineNo">890</span> *<a name="line.890"></a>
-<span class="sourceLineNo">891</span> * @param c The class to get all methods on.<a name="line.891"></a>
-<span class="sourceLineNo">892</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.892"></a>
-<span class="sourceLineNo">893</span> * @return An iterable of all methods in the specified class.<a name="line.893"></a>
-<span class="sourceLineNo">894</span> */<a name="line.894"></a>
-<span class="sourceLineNo">895</span> @SuppressWarnings("rawtypes")<a name="line.895"></a>
-<span class="sourceLineNo">896</span> public static Iterable<Method> getAllMethods(final Class c, final boolean parentFirst) {<a name="line.896"></a>
-<span class="sourceLineNo">897</span> return new Iterable<Method>() {<a name="line.897"></a>
-<span class="sourceLineNo">898</span> @Override<a name="line.898"></a>
-<span class="sourceLineNo">899</span> public Iterator<Method> iterator() {<a name="line.899"></a>
-<span class="sourceLineNo">900</span> return new Iterator<Method>(){<a name="line.900"></a>
-<span class="sourceLineNo">901</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, true);<a name="line.901"></a>
-<span class="sourceLineNo">902</span> Method[] methods = classIterator.hasNext() ? classIterator.next().getDeclaredMethods() : new Method[0];<a name="line.902"></a>
-<span class="sourceLineNo">903</span> int mIndex = 0;<a name="line.903"></a>
-<span class="sourceLineNo">904</span> Method next;<a name="line.904"></a>
-<span class="sourceLineNo">905</span><a name="line.905"></a>
-<span class="sourceLineNo">906</span> @Override<a name="line.906"></a>
-<span class="sourceLineNo">907</span> public boolean hasNext() {<a name="line.907"></a>
-<span class="sourceLineNo">908</span> prime();<a name="line.908"></a>
-<span class="sourceLineNo">909</span> return next != null;<a name="line.909"></a>
-<span class="sourceLineNo">910</span> }<a name="line.910"></a>
+<span class="sourceLineNo">836</span> * <p><a name="line.836"></a>
+<span class="sourceLineNo">837</span> * Fields are ordered in either parent-to-child, or child-to-parent order, then alphabetically.<a name="line.837"></a>
+<span class="sourceLineNo">838</span> *<a name="line.838"></a>
+<span class="sourceLineNo">839</span> * @param c The class to get all fields on.<a name="line.839"></a>
+<span class="sourceLineNo">840</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.840"></a>
+<span class="sourceLineNo">841</span> * @return An iterable of all fields in the specified class.<a name="line.841"></a>
+<span class="sourceLineNo">842</span> */<a name="line.842"></a>
+<span class="sourceLineNo">843</span> @SuppressWarnings("rawtypes")<a name="line.843"></a>
+<span class="sourceLineNo">844</span> public static Iterable<Field> getAllFields(final Class c, final boolean parentFirst) {<a name="line.844"></a>
+<span class="sourceLineNo">845</span> return new Iterable<Field>() {<a name="line.845"></a>
+<span class="sourceLineNo">846</span> @Override<a name="line.846"></a>
+<span class="sourceLineNo">847</span> public Iterator<Field> iterator() {<a name="line.847"></a>
+<span class="sourceLineNo">848</span> return new Iterator<Field>(){<a name="line.848"></a>
+<span class="sourceLineNo">849</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, false);<a name="line.849"></a>
+<span class="sourceLineNo">850</span> Field[] fields = classIterator.hasNext() ? sort(classIterator.next().getDeclaredFields()) : new Field[0];<a name="line.850"></a>
+<span class="sourceLineNo">851</span> int fIndex = 0;<a name="line.851"></a>
+<span class="sourceLineNo">852</span> Field next;<a name="line.852"></a>
+<span class="sourceLineNo">853</span><a name="line.853"></a>
+<span class="sourceLineNo">854</span> @Override<a name="line.854"></a>
+<span class="sourceLineNo">855</span> public boolean hasNext() {<a name="line.855"></a>
+<span class="sourceLineNo">856</span> prime();<a name="line.856"></a>
+<span class="sourceLineNo">857</span> return next != null;<a name="line.857"></a>
+<span class="sourceLineNo">858</span> }<a name="line.858"></a>
+<span class="sourceLineNo">859</span><a name="line.859"></a>
+<span class="sourceLineNo">860</span> private void prime() {<a name="line.860"></a>
+<span class="sourceLineNo">861</span> if (next == null) {<a name="line.861"></a>
+<span class="sourceLineNo">862</span> while (fIndex >= fields.length) {<a name="line.862"></a>
+<span class="sourceLineNo">863</span> if (classIterator.hasNext()) {<a name="line.863"></a>
+<span class="sourceLineNo">864</span> fields = sort(classIterator.next().getDeclaredFields());<a name="line.864"></a>
+<span class="sourceLineNo">865</span> fIndex = 0;<a name="line.865"></a>
+<span class="sourceLineNo">866</span> } else {<a name="line.866"></a>
+<span class="sourceLineNo">867</span> fIndex = -1;<a name="line.867"></a>
+<span class="sourceLineNo">868</span> }<a name="line.868"></a>
+<span class="sourceLineNo">869</span> }<a name="line.869"></a>
+<span class="sourceLineNo">870</span> if (fIndex != -1)<a name="line.870"></a>
+<span class="sourceLineNo">871</span> next = fields[fIndex++];<a name="line.871"></a>
+<span class="sourceLineNo">872</span> }<a name="line.872"></a>
+<span class="sourceLineNo">873</span> }<a name="line.873"></a>
+<span class="sourceLineNo">874</span><a name="line.874"></a>
+<span class="sourceLineNo">875</span> @Override<a name="line.875"></a>
+<span class="sourceLineNo">876</span> public Field next() {<a name="line.876"></a>
+<span class="sourceLineNo">877</span> prime();<a name="line.877"></a>
+<span class="sourceLineNo">878</span> Field f = next;<a name="line.878"></a>
+<span class="sourceLineNo">879</span> next = null;<a name="line.879"></a>
+<span class="sourceLineNo">880</span> return f;<a name="line.880"></a>
+<span class="sourceLineNo">881</span> }<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
+<span class="sourceLineNo">883</span> @Override<a name="line.883"></a>
+<span class="sourceLineNo">884</span> public void remove() {<a name="line.884"></a>
+<span class="sourceLineNo">885</span> }<a name="line.885"></a>
+<span class="sourceLineNo">886</span> };<a name="line.886"></a>
+<span class="sourceLineNo">887</span> }<a name="line.887"></a>
+<span class="sourceLineNo">888</span> };<a name="line.888"></a>
+<span class="sourceLineNo">889</span> }<a name="line.889"></a>
+<span class="sourceLineNo">890</span><a name="line.890"></a>
+<span class="sourceLineNo">891</span> /**<a name="line.891"></a>
+<span class="sourceLineNo">892</span> * Returns all the methods in the specified class and all parent classes.<a name="line.892"></a>
+<span class="sourceLineNo">893</span> *<a name="line.893"></a>
+<span class="sourceLineNo">894</span> * <p><a name="line.894"></a>
+<span class="sourceLineNo">895</span> * Methods are ordered in either parent-to-child, or child-to-parent order, then alphabetically.<a name="line.895"></a>
+<span class="sourceLineNo">896</span> *<a name="line.896"></a>
+<span class="sourceLineNo">897</span> * @param c The class to get all methods on.<a name="line.897"></a>
+<span class="sourceLineNo">898</span> * @param parentFirst Order them in parent-class-to-child-class order, otherwise child-class-to-parent-class order.<a name="line.898"></a>
+<span class="sourceLineNo">899</span> * @return An iterable of all methods in the specified class.<a name="line.899"></a>
+<span class="sourceLineNo">900</span> */<a name="line.900"></a>
+<span class="sourceLineNo">901</span> @SuppressWarnings("rawtypes")<a name="line.901"></a>
+<span class="sourceLineNo">902</span> public static Iterable<Method> getAllMethods(final Class c, final boolean parentFirst) {<a name="line.902"></a>
+<span class="sourceLineNo">903</span> return new Iterable<Method>() {<a name="line.903"></a>
+<span class="sourceLineNo">904</span> @Override<a name="line.904"></a>
+<span class="sourceLineNo">905</span> public Iterator<Method> iterator() {<a name="line.905"></a>
+<span class="sourceLineNo">906</span> return new Iterator<Method>(){<a name="line.906"></a>
+<span class="sourceLineNo">907</span> final Iterator<Class<?>> classIterator = getParentClasses(c, parentFirst, true);<a name="line.907"></a>
+<span class="sourceLineNo">908</span> Method[] methods = classIterator.hasNext() ? sort(classIterator.next().getDeclaredMethods()) : new Method[0];<a name="line.908"></a>
+<span class="sourceLineNo">909</span> int mIndex = 0;<a name="line.909"></a>
+<span class="sourceLineNo">910</span> Method next;<a name="line.910"></a>
<span class="sourceLineNo">911</span><a name="line.911"></a>
-<span class="sourceLineNo">912</span> private void prime() {<a name="line.912"></a>
-<span class="sourceLineNo">913</span> if (next == null) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span> while (mIndex >= methods.length) {<a name="line.914"></a>
-<span class="sourceLineNo">915</span> if (classIterator.hasNext()) {<a name="line.915"></a>
-<span class="sourceLineNo">916</span> methods = classIterator.next().getDeclaredMethods();<a name="line.916"></a>
-<span class="sourceLineNo">917</span> mIndex = 0;<a name="line.917"></a>
-<span class="sourceLineNo">918</span> } else {<a name="line.918"></a>
-<span class="sourceLineNo">919</span> mIndex = -1;<a name="line.919"></a>
-<span class="sourceLineNo">920</span> }<a name="line.920"></a>
-<span class="sourceLineNo">921</span> }<a name="line.921"></a>
-<span class="sourceLineNo">922</span> if (mIndex != -1)<a name="line.922"></a>
-<span class="sourceLineNo">923</span> next = methods[mIndex++];<a name="line.923"></a>
-<span class="sourceLineNo">924</span> }<a name="line.924"></a>
-<span class="sourceLineNo">925</span> }<a name="line.925"></a>
-<span class="sourceLineNo">926</span><a name="line.926"></a>
-<span class="sourceLineNo">927</span> @Override<a name="line.927"></a>
-<span class="sourceLineNo">928</span> public Method next() {<a name="line.928"></a>
-<span class="sourceLineNo">929</span> prime();<a name="line.929"></a>
-<span class="sourceLineNo">930</span> Method m = next;<a name="line.930"></a>
-<span class="sourceLineNo">931</span> next = null;<a name="line.931"></a>
-<span class="sourceLineNo">932</span> return m;<a name="line.932"></a>
-<span class="sourceLineNo">933</span> }<a name="line.933"></a>
-<span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span> @Override<a name="line.935"></a>
-<span class="sourceLineNo">936</span> public void remove() {<a name="line.936"></a>
-<span class="sourceLineNo">937</span> }<a name="line.937"></a>
-<span class="sourceLineNo">938</span> };<a name="line.938"></a>
-<span class="sourceLineNo">939</span> }<a name="line.939"></a>
-<span class="sourceLineNo">940</span> };<a name="line.940"></a>
-<span class="sourceLineNo">941</span> }<a name="line.941"></a>
-<span class="sourceLineNo">942</span><a name="line.942"></a>
-<span class="sourceLineNo">943</span> /**<a name="line.943"></a>
-<span class="sourceLineNo">944</span> * Returns a list of all the parent classes of the specified class including the class itself.<a name="line.944"></a>
-<span class="sourceLineNo">945</span> *<a name="line.945"></a>
-<span class="sourceLineNo">946</span> * @param c The class to retrieve the parent classes.<a name="line.946"></a>
-<span class="sourceLineNo">947</span> * @param parentFirst In parent-to-child order, otherwise child-to-parent.<a name="line.947"></a>
-<span class="sourceLineNo">948</span> * @param includeInterfaces Include interfaces.<a name="line.948"></a>
-<span class="sourceLineNo">949</span> * @return An iterator of parent classes in the class hierarchy.<a name="line.949"></a>
-<span class="sourceLineNo">950</span> */<a name="line.950"></a>
-<span class="sourceLineNo">951</span> public static Iterator<Class<?>> getParentClasses(final Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.951"></a>
-<span class="sourceLineNo">952</span> List<Class<?>> l = getParentClasses(new ArrayList<Class<?>>(), c, parentFirst, includeInterfaces);<a name="line.952"></a>
-<span class="sourceLineNo">953</span> return l.iterator();<a name="line.953"></a>
-<span class="sourceLineNo">954</span> }<a name="line.954"></a>
-<span class="sourceLineNo">955</span><a name="line.955"></a>
-<span class="sourceLineNo">956</span> private static List<Class<?>> getParentClasses(List<Class<?>> l, Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span> if (parentFirst) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span> if (includeInterfaces)<a name="line.958"></a>
-<span class="sourceLineNo">959</span> for (Class<?> i : c.getInterfaces())<a name="line.959"></a>
-<span class="sourceLineNo">960</span> l.add(i);<a name="line.960"></a>
-<span class="sourceLineNo">961</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.961"></a>
-<span class="sourceLineNo">962</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.962"></a>
-<span class="sourceLineNo">963</span> l.add(c);<a name="line.963"></a>
-<span class="sourceLineNo">964</span> } else {<a name="line.964"></a>
-<span class="sourceLineNo">965</span> l.add(c);<a name="line.965"></a>
-<span class="sourceLineNo">966</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.966"></a>
-<span class="sourceLineNo">967</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.967"></a>
-<span class="sourceLineNo">968</span> if (includeInterfaces)<a name="line.968"></a>
-<span class="sourceLineNo">969</span> for (Class<?> i : c.getInterfaces())<a name="line.969"></a>
-<span class="sourceLineNo">970</span> l.add(i);<a name="line.970"></a>
-<span class="sourceLineNo">971</span> }<a name="line.971"></a>
-<span class="sourceLineNo">972</span> return l;<a name="line.972"></a>
-<span class="sourceLineNo">973</span> }<a name="line.973"></a>
-<span class="sourceLineNo">974</span><a name="line.974"></a>
-<span class="sourceLineNo">975</span> /**<a name="line.975"></a>
-<span class="sourceLineNo">976</span> * Returns the default value for the specified primitive class.<a name="line.976"></a>
-<span class="sourceLineNo">977</span> *<a name="line.977"></a>
-<span class="sourceLineNo">978</span> * @param primitiveClass The primitive class to get the default value for.<a name="line.978"></a>
-<span class="sourceLineNo">979</span> * @return The default value, or <jk>null</jk> if the specified class is not a primitive class.<a name="line.979"></a>
-<span class="sourceLineNo">980</span> */<a name="line.980"></a>
-<span class="sourceLineNo">981</span> public static Object getPrimitiveDefault(Class<?> primitiveClass) {<a name="line.981"></a>
-<span class="sourceLineNo">982</span> return primitiveDefaultMap.get(primitiveClass);<a name="line.982"></a>
-<span class="sourceLineNo">983</span> }<a name="line.983"></a>
+<span class="sourceLineNo">912</span> @Override<a name="line.912"></a>
+<span class="sourceLineNo">913</span> public boolean hasNext() {<a name="line.913"></a>
+<span class="sourceLineNo">914</span> prime();<a name="line.914"></a>
+<span class="sourceLineNo">915</span> return next != null;<a name="line.915"></a>
+<span class="sourceLineNo">916</span> }<a name="line.916"></a>
+<span class="sourceLineNo">917</span><a name="line.917"></a>
+<span class="sourceLineNo">918</span> private void prime() {<a name="line.918"></a>
+<span class="sourceLineNo">919</span> if (next == null) {<a name="line.919"></a>
+<span class="sourceLineNo">920</span> while (mIndex >= methods.length) {<a name="line.920"></a>
+<span class="sourceLineNo">921</span> if (classIterator.hasNext()) {<a name="line.921"></a>
+<span class="sourceLineNo">922</span> methods = sort(classIterator.next().getDeclaredMethods());<a name="line.922"></a>
+<span class="sourceLineNo">923</span> mIndex = 0;<a name="line.923"></a>
+<span class="sourceLineNo">924</span> } else {<a name="line.924"></a>
+<span class="sourceLineNo">925</span> mIndex = -1;<a name="line.925"></a>
+<span class="sourceLineNo">926</span> }<a name="line.926"></a>
+<span class="sourceLineNo">927</span> }<a name="line.927"></a>
+<span class="sourceLineNo">928</span> if (mIndex != -1)<a name="line.928"></a>
+<span class="sourceLineNo">929</span> next = methods[mIndex++];<a name="line.929"></a>
+<span class="sourceLineNo">930</span> }<a name="line.930"></a>
+<span class="sourceLineNo">931</span> }<a name="line.931"></a>
+<span class="sourceLineNo">932</span><a name="line.932"></a>
+<span class="sourceLineNo">933</span> @Override<a name="line.933"></a>
+<span class="sourceLineNo">934</span> public Method next() {<a name="line.934"></a>
+<span class="sourceLineNo">935</span> prime();<a name="line.935"></a>
+<span class="sourceLineNo">936</span> Method m = next;<a name="line.936"></a>
+<span class="sourceLineNo">937</span> next = null;<a name="line.937"></a>
+<span class="sourceLineNo">938</span> return m;<a name="line.938"></a>
+<span class="sourceLineNo">939</span> }<a name="line.939"></a>
+<span class="sourceLineNo">940</span><a name="line.940"></a>
+<span class="sourceLineNo">941</span> @Override<a name="line.941"></a>
+<span class="sourceLineNo">942</span> public void remove() {<a name="line.942"></a>
+<span class="sourceLineNo">943</span> }<a name="line.943"></a>
+<span class="sourceLineNo">944</span> };<a name="line.944"></a>
+<span class="sourceLineNo">945</span> }<a name="line.945"></a>
+<span class="sourceLineNo">946</span> };<a name="line.946"></a>
+<span class="sourceLineNo">947</span> }<a name="line.947"></a>
+<span class="sourceLineNo">948</span><a name="line.948"></a>
+<span class="sourceLineNo">949</span> private static Comparator<Method> METHOD_COMPARATOR = new Comparator<Method>() {<a name="line.949"></a>
+<span class="sourceLineNo">950</span><a name="line.950"></a>
+<span class="sourceLineNo">951</span> @Override<a name="line.951"></a>
+<span class="sourceLineNo">952</span> public int compare(Method o1, Method o2) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span> int i = o1.getName().compareTo(o2.getName());<a name="line.953"></a>
+<span class="sourceLineNo">954</span> if (i == 0) {<a name="line.954"></a>
+<span class="sourceLineNo">955</span> i = o1.getParameterCount() - o2.getParameterCount();<a name="line.955"></a>
+<span class="sourceLineNo">956</span> if (i == 0) {<a name="line.956"></a>
+<span class="sourceLineNo">957</span> for (int j = 0; j < o1.getParameterTypes().length && i == 0; j++) {<a name="line.957"></a>
+<span class="sourceLineNo">958</span> i = o1.getParameterTypes()[j].getName().compareTo(o2.getParameterTypes()[j].getName());<a name="line.958"></a>
+<span class="sourceLineNo">959</span> }<a name="line.959"></a>
+<span class="sourceLineNo">960</span> }<a name="line.960"></a>
+<span class="sourceLineNo">961</span> }<a name="line.961"></a>
+<span class="sourceLineNo">962</span> return i;<a name="line.962"></a>
+<span class="sourceLineNo">963</span> }<a name="line.963"></a>
+<span class="sourceLineNo">964</span> };<a name="line.964"></a>
+<span class="sourceLineNo">965</span><a name="line.965"></a>
+<span class="sourceLineNo">966</span> /**<a name="line.966"></a>
+<span class="sourceLineNo">967</span> * Sorts methods in alphabetical order.<a name="line.967"></a>
+<span class="sourceLineNo">968</span> *<a name="line.968"></a>
+<span class="sourceLineNo">969</span> * @param m The methods to sort.<a name="line.969"></a>
+<span class="sourceLineNo">970</span> * @return The same array, but with elements sorted.<a name="line.970"></a>
+<span class="sourceLineNo">971</span> */<a name="line.971"></a>
+<span class="sourceLineNo">972</span> public static Method[] sort(Method[] m) {<a name="line.972"></a>
+<span class="sourceLineNo">973</span> Arrays.sort(m, METHOD_COMPARATOR);<a name="line.973"></a>
+<span class="sourceLineNo">974</span> return m;<a name="line.974"></a>
+<span class="sourceLineNo">975</span> }<a name="line.975"></a>
+<span class="sourceLineNo">976</span><a name="line.976"></a>
+<span class="sourceLineNo">977</span> private static Comparator<Field> FIELD_COMPARATOR = new Comparator<Field>() {<a name="line.977"></a>
+<span class="sourceLineNo">978</span><a name="line.978"></a>
+<span class="sourceLineNo">979</span> @Override<a name="line.979"></a>
+<span class="sourceLineNo">980</span> public int compare(Field o1, Field o2) {<a name="line.980"></a>
+<span class="sourceLineNo">981</span> return o1.getName().compareTo(o2.getName());<a name="line.981"></a>
+<span class="sourceLineNo">982</span> }<a name="line.982"></a>
+<span class="sourceLineNo">983</span> };<a name="line.983"></a>
<span class="sourceLineNo">984</span><a name="line.984"></a>
-<span class="sourceLineNo">985</span> private static final Map<Class<?>,Object> primitiveDefaultMap = Collections.unmodifiableMap(<a name="line.985"></a>
-<span class="sourceLineNo">986</span> new AMap<Class<?>,Object>()<a name="line.986"></a>
-<span class="sourceLineNo">987</span> .append(Boolean.TYPE, false)<a name="line.987"></a>
-<span class="sourceLineNo">988</span> .append(Character.TYPE, (char)0)<a name="line.988"></a>
-<span class="sourceLineNo">989</span> .append(Short.TYPE, (short)0)<a name="line.989"></a>
-<span class="sourceLineNo">990</span> .append(Integer.TYPE, 0)<a name="line.990"></a>
-<span class="sourceLineNo">991</span> .append(Long.TYPE, 0l)<a name="line.991"></a>
-<span class="sourceLineNo">992</span> .append(Float.TYPE, 0f)<a name="line.992"></a>
-<span class="sourceLineNo">993</span> .append(Double.TYPE, 0d)<a name="line.993"></a>
-<span class="sourceLineNo">994</span> .append(Byte.TYPE, (byte)0)<a name="line.994"></a>
-<span class="sourceLineNo">995</span> .append(Boolean.class, false)<a name="line.995"></a>
-<span class="sourceLineNo">996</span> .append(Character.class, (char)0)<a name="line.996"></a>
-<span class="sourceLineNo">997</span> .append(Short.class, (short)0)<a name="line.997"></a>
-<span class="sourceLineNo">998</span> .append(Integer.class, 0)<a name="line.998"></a>
-<span class="sourceLineNo">999</span> .append(Long.class, 0l)<a name="line.999"></a>
-<span class="sourceLineNo">1000</span> .append(Float.class, 0f)<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span> .append(Double.class, 0d)<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span> .append(Byte.class, (byte)0)<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span> );<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>}<a name="line.1004"></a>
+<span class="sourceLineNo">985</span> /**<a name="line.985"></a>
+<span class="sourceLineNo">986</span> * Sorts methods in alphabetical order.<a name="line.986"></a>
+<span class="sourceLineNo">987</span> *<a name="line.987"></a>
+<span class="sourceLineNo">988</span> * @param m The methods to sort.<a name="line.988"></a>
+<span class="sourceLineNo">989</span> * @return The same array, but with elements sorted.<a name="line.989"></a>
+<span class="sourceLineNo">990</span> */<a name="line.990"></a>
+<span class="sourceLineNo">991</span> public static Field[] sort(Field[] m) {<a name="line.991"></a>
+<span class="sourceLineNo">992</span> Arrays.sort(m, FIELD_COMPARATOR);<a name="line.992"></a>
+<span class="sourceLineNo">993</span> return m;<a name="line.993"></a>
+<span class="sourceLineNo">994</span> }<a name="line.994"></a>
+<span class="sourceLineNo">995</span><a name="line.995"></a>
+<span class="sourceLineNo">996</span> /**<a name="line.996"></a>
+<span class="sourceLineNo">997</span> * Returns a list of all the parent classes of the specified class including the class itself.<a name="line.997"></a>
+<span class="sourceLineNo">998</span> *<a name="line.998"></a>
+<span class="sourceLineNo">999</span> * @param c The class to retrieve the parent classes.<a name="line.999"></a>
+<span class="sourceLineNo">1000</span> * @param parentFirst In parent-to-child order, otherwise child-to-parent.<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span> * @param includeInterfaces Include interfaces.<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span> * @return An iterator of parent classes in the class hierarchy.<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span> */<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span> public static Iterator<Class<?>> getParentClasses(final Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span> List<Class<?>> l = getParentClasses(new ArrayList<Class<?>>(), c, parentFirst, includeInterfaces);<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span> return l.iterator();<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span> }<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span><a name="line.1008"></a>
+<span class="sourceLineNo">1009</span> private static List<Class<?>> getParentClasses(List<Class<?>> l, Class<?> c, boolean parentFirst, boolean includeInterfaces) {<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span> if (parentFirst) {<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span> if (includeInterfaces)<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span> for (Class<?> i : c.getInterfaces())<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span> l.add(i);<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span> l.add(c);<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span> } else {<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span> l.add(c);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span> if (c.getSuperclass() != Object.class && c.getSuperclass() != null)<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span> getParentClasses(l, c.getSuperclass(), parentFirst, includeInterfaces);<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span> if (includeInterfaces)<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span> for (Class<?> i : c.getInterfaces())<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span> l.add(i);<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span> }<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span> return l;<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span> }<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span><a name="line.1027"></a>
+<span class="sourceLineNo">1028</span> /**<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span> * Returns the default value for the specified primitive class.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span> *<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span> * @param primitiveClass The primitive class to get the default value for.<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span> * @return The default value, or <jk>null</jk> if the specified class is not a primitive class.<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span> */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span> public static Object getPrimitiveDefault(Class<?> primitiveClass) {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span> return primitiveDefaultMap.get(primitiveClass);<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span> }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span> private static final Map<Class<?>,Object> primitiveDefaultMap = Collections.unmodifiableMap(<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span> new AMap<Class<?>,Object>()<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span> .append(Boolean.TYPE, false)<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span> .append(Character.TYPE, (char)0)<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span> .append(Short.TYPE, (short)0)<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span> .append(Integer.TYPE, 0)<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span> .append(Long.TYPE, 0l)<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span> .append(Float.TYPE, 0f)<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span> .append(Double.TYPE, 0d)<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span> .append(Byte.TYPE, (byte)0)<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span> .append(Boolean.class, false)<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span> .append(Character.class, (char)0)<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span> .append(Short.class, (short)0)<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span> .append(Integer.class, 0)<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span> .append(Long.class, 0l)<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span> .append(Float.class, 0f)<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span> .append(Double.class, 0d)<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span> .append(Byte.class, (byte)0)<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span> );<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span><a name="line.1057"></a>
+<span class="sourceLineNo">1058</span> /**<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span> * Returns a readable representation of the specified method.<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span> *<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span> * <p><a name="line.1061"></a>
+<span class="sourceLineNo">1062</span> * The format of the string is <js>"full-qualified-class.method-name(parameter-simple-class-names)"</js>.<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span> *<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span> * @param m The method to stringify.<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span> * @return The stringified method.<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span> */<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span> public static String toString(Method m) {<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span> StringBuilder sb = new StringBuilder(m.getDeclaringClass().getName() + "." + m.getName() + "(");<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span> for (int i = 0; i < m.getParameterCount(); i++) {<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span> if (i > 0)<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span> sb.append(",");<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span> sb.append(m.getParameterTypes()[i].getSimpleName());<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span> }<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span> sb.append(")");<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span> return sb.toString();<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span> }<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span><a name="line.1077"></a>
+<span class="sourceLineNo">1078</span> /**<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span> * Returns a readable representation of the specified field.<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span> *<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span> * <p><a name="line.1081"></a>
+<span class="sourceLineNo">1082</span> * The format of the string is <js>"full-qualified-class.field-name"</js>.<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span> *<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span> * @param f The field to stringify.<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span> * @return The stringified field.<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span> */<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span> public static String toString(Field f) {<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span> return f.getDeclaringClass().getName() + "." + f.getName();<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span> }<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span><a name="line.1090"></a>
+<span class="sourceLineNo">1091</span> /**<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span> * Throws an {@link IllegalArgumentException} if the parameters on the method are not in the specified list provided.<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span> *<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span> * @param m The method to test.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span> * @param args The valid class types (exact) for the arguments.<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span> * @throws FormattedIllegalArgumentException If any of the parameters on the method weren't in the list.<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span> */<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span> public static void assertArgsOfType(Method m, Class<?>...args) throws FormattedIllegalArgumentException {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span> for (Class<?> c1 : m.getParameterTypes()) {<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span> boolean foundMatch = false;<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span> for (Class<?> c2 : args)<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span> if (c1 == c2)<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span> foundMatch = true;<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span> if (! foundMatch)<a name="line.1104"></a>
+<span class="sourceLineNo">1105</span> throw new FormattedIllegalArgumentException("Invalid argument of type {0} passed in method {1}. Only arguments of type {2} are allowed.", c1, m, args);<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span> }<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span> }<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>}<a name="line.1108"></a>
[03/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/rest/RestResponse.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RestResponse.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RestResponse.html
index a0f750e..8de320a 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RestResponse.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RestResponse.html
@@ -320,489 +320,497 @@
<span class="sourceLineNo">312</span> public final void close() throws IOException {<a name="line.312"></a>
<span class="sourceLineNo">313</span> os2.close();<a name="line.313"></a>
<span class="sourceLineNo">314</span> }<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> return os;<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> @Override /* ServletResponse */<a name="line.321"></a>
-<span class="sourceLineNo">322</span> public ServletOutputStream getOutputStream() throws IOException {<a name="line.322"></a>
-<span class="sourceLineNo">323</span> if (os == null)<a name="line.323"></a>
-<span class="sourceLineNo">324</span> os = super.getOutputStream();<a name="line.324"></a>
-<span class="sourceLineNo">325</span> return os;<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> * Returns <jk>true</jk> if {@link #getOutputStream()} has been called.<a name="line.329"></a>
-<span class="sourceLineNo">330</span> *<a name="line.330"></a>
-<span class="sourceLineNo">331</span> * @return <jk>true</jk> if {@link #getOutputStream()} has been called.<a name="line.331"></a>
-<span class="sourceLineNo">332</span> */<a name="line.332"></a>
-<span class="sourceLineNo">333</span> public boolean getOutputStreamCalled() {<a name="line.333"></a>
-<span class="sourceLineNo">334</span> return os != null;<a name="line.334"></a>
-<span class="sourceLineNo">335</span> }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span> /**<a name="line.337"></a>
-<span class="sourceLineNo">338</span> * Returns the writer to the response body.<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> * This methods bypasses any specified encoders and returns a regular unbuffered writer.<a name="line.341"></a>
-<span class="sourceLineNo">342</span> * Use the {@link #getNegotiatedWriter()} method if you want to use the matched encoder (if any).<a name="line.342"></a>
-<span class="sourceLineNo">343</span> */<a name="line.343"></a>
-<span class="sourceLineNo">344</span> @Override /* ServletResponse */<a name="line.344"></a>
-<span class="sourceLineNo">345</span> public PrintWriter getWriter() throws IOException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span> return getWriter(true);<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> * Convenience method meant to be used when rendering directly to a browser with no buffering.<a name="line.350"></a>
-<span class="sourceLineNo">351</span> *<a name="line.351"></a>
-<span class="sourceLineNo">352</span> * <p><a name="line.352"></a>
-<span class="sourceLineNo">353</span> * Sets the header <js>"x-content-type-options=nosniff"</js> so that output is rendered immediately on IE and Chrome<a name="line.353"></a>
-<span class="sourceLineNo">354</span> * without any buffering for content-type sniffing.<a name="line.354"></a>
-<span class="sourceLineNo">355</span> *<a name="line.355"></a>
-<span class="sourceLineNo">356</span> * @param contentType The value to set as the <code>Content-Type</code> on the response.<a name="line.356"></a>
-<span class="sourceLineNo">357</span> * @return The raw writer.<a name="line.357"></a>
-<span class="sourceLineNo">358</span> * @throws IOException<a name="line.358"></a>
-<span class="sourceLineNo">359</span> */<a name="line.359"></a>
-<span class="sourceLineNo">360</span> public PrintWriter getDirectWriter(String contentType) throws IOException {<a name="line.360"></a>
-<span class="sourceLineNo">361</span> setContentType(contentType);<a name="line.361"></a>
-<span class="sourceLineNo">362</span> setHeader("x-content-type-options", "nosniff");<a name="line.362"></a>
-<span class="sourceLineNo">363</span> return getWriter();<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> /**<a name="line.366"></a>
-<span class="sourceLineNo">367</span> * Equivalent to {@link HttpServletResponse#getWriter()}, except wraps the output stream if an {@link Encoder} was<a name="line.367"></a>
-<span class="sourceLineNo">368</span> * found that matched the <code>Accept-Encoding</code> header and sets the <code>Content-Encoding</code><a name="line.368"></a>
-<span class="sourceLineNo">369</span> * header to the appropriate value.<a name="line.369"></a>
-<span class="sourceLineNo">370</span> *<a name="line.370"></a>
-<span class="sourceLineNo">371</span> * @return The negotiated writer.<a name="line.371"></a>
-<span class="sourceLineNo">372</span> * @throws IOException<a name="line.372"></a>
-<span class="sourceLineNo">373</span> */<a name="line.373"></a>
-<span class="sourceLineNo">374</span> public PrintWriter getNegotiatedWriter() throws IOException {<a name="line.374"></a>
-<span class="sourceLineNo">375</span> return getWriter(false);<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> private PrintWriter getWriter(boolean raw) throws IOException {<a name="line.378"></a>
-<span class="sourceLineNo">379</span> if (w != null)<a name="line.379"></a>
-<span class="sourceLineNo">380</span> return w;<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span> // If plain text requested, override it now.<a name="line.382"></a>
-<span class="sourceLineNo">383</span> if (request.isPlainText())<a name="line.383"></a>
-<span class="sourceLineNo">384</span> setHeader("Content-Type", "text/plain");<a name="line.384"></a>
+<span class="sourceLineNo">315</span> @Override /* ServletOutputStream */<a name="line.315"></a>
+<span class="sourceLineNo">316</span> public boolean isReady() {<a name="line.316"></a>
+<span class="sourceLineNo">317</span> return true;<a name="line.317"></a>
+<span class="sourceLineNo">318</span> }<a name="line.318"></a>
+<span class="sourceLineNo">319</span> @Override /* ServletOutputStream */<a name="line.319"></a>
+<span class="sourceLineNo">320</span> public void setWriteListener(WriteListener arg0) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span> throw new NoSuchMethodError();<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> return os;<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 /* ServletResponse */<a name="line.329"></a>
+<span class="sourceLineNo">330</span> public ServletOutputStream getOutputStream() throws IOException {<a name="line.330"></a>
+<span class="sourceLineNo">331</span> if (os == null)<a name="line.331"></a>
+<span class="sourceLineNo">332</span> os = super.getOutputStream();<a name="line.332"></a>
+<span class="sourceLineNo">333</span> return os;<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> /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span> * Returns <jk>true</jk> if {@link #getOutputStream()} has been called.<a name="line.337"></a>
+<span class="sourceLineNo">338</span> *<a name="line.338"></a>
+<span class="sourceLineNo">339</span> * @return <jk>true</jk> if {@link #getOutputStream()} has been called.<a name="line.339"></a>
+<span class="sourceLineNo">340</span> */<a name="line.340"></a>
+<span class="sourceLineNo">341</span> public boolean getOutputStreamCalled() {<a name="line.341"></a>
+<span class="sourceLineNo">342</span> return os != null;<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> /**<a name="line.345"></a>
+<span class="sourceLineNo">346</span> * Returns the writer to the response body.<a name="line.346"></a>
+<span class="sourceLineNo">347</span> *<a name="line.347"></a>
+<span class="sourceLineNo">348</span> * <p><a name="line.348"></a>
+<span class="sourceLineNo">349</span> * This methods bypasses any specified encoders and returns a regular unbuffered writer.<a name="line.349"></a>
+<span class="sourceLineNo">350</span> * Use the {@link #getNegotiatedWriter()} method if you want to use the matched encoder (if any).<a name="line.350"></a>
+<span class="sourceLineNo">351</span> */<a name="line.351"></a>
+<span class="sourceLineNo">352</span> @Override /* ServletResponse */<a name="line.352"></a>
+<span class="sourceLineNo">353</span> public PrintWriter getWriter() throws IOException {<a name="line.353"></a>
+<span class="sourceLineNo">354</span> return getWriter(true);<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> /**<a name="line.357"></a>
+<span class="sourceLineNo">358</span> * Convenience method meant to be used when rendering directly to a browser with no buffering.<a name="line.358"></a>
+<span class="sourceLineNo">359</span> *<a name="line.359"></a>
+<span class="sourceLineNo">360</span> * <p><a name="line.360"></a>
+<span class="sourceLineNo">361</span> * Sets the header <js>"x-content-type-options=nosniff"</js> so that output is rendered immediately on IE and Chrome<a name="line.361"></a>
+<span class="sourceLineNo">362</span> * without any buffering for content-type sniffing.<a name="line.362"></a>
+<span class="sourceLineNo">363</span> *<a name="line.363"></a>
+<span class="sourceLineNo">364</span> * @param contentType The value to set as the <code>Content-Type</code> on the response.<a name="line.364"></a>
+<span class="sourceLineNo">365</span> * @return The raw writer.<a name="line.365"></a>
+<span class="sourceLineNo">366</span> * @throws IOException<a name="line.366"></a>
+<span class="sourceLineNo">367</span> */<a name="line.367"></a>
+<span class="sourceLineNo">368</span> public PrintWriter getDirectWriter(String contentType) throws IOException {<a name="line.368"></a>
+<span class="sourceLineNo">369</span> setContentType(contentType);<a name="line.369"></a>
+<span class="sourceLineNo">370</span> setHeader("x-content-type-options", "nosniff");<a name="line.370"></a>
+<span class="sourceLineNo">371</span> return getWriter();<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>
+<span class="sourceLineNo">375</span> * Equivalent to {@link HttpServletResponse#getWriter()}, except wraps the output stream if an {@link Encoder} was<a name="line.375"></a>
+<span class="sourceLineNo">376</span> * found that matched the <code>Accept-Encoding</code> header and sets the <code>Content-Encoding</code><a name="line.376"></a>
+<span class="sourceLineNo">377</span> * header to the appropriate value.<a name="line.377"></a>
+<span class="sourceLineNo">378</span> *<a name="line.378"></a>
+<span class="sourceLineNo">379</span> * @return The negotiated writer.<a name="line.379"></a>
+<span class="sourceLineNo">380</span> * @throws IOException<a name="line.380"></a>
+<span class="sourceLineNo">381</span> */<a name="line.381"></a>
+<span class="sourceLineNo">382</span> public PrintWriter getNegotiatedWriter() throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span> return getWriter(false);<a name="line.383"></a>
+<span class="sourceLineNo">384</span> }<a name="line.384"></a>
<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span> try {<a name="line.386"></a>
-<span class="sourceLineNo">387</span> OutputStream out = (raw ? getOutputStream() : getNegotiatedOutputStream());<a name="line.387"></a>
-<span class="sourceLineNo">388</span> w = new PrintWriter(new OutputStreamWriter(out, getCharacterEncoding()));<a name="line.388"></a>
-<span class="sourceLineNo">389</span> return w;<a name="line.389"></a>
-<span class="sourceLineNo">390</span> } catch (UnsupportedEncodingException e) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span> String ce = getCharacterEncoding();<a name="line.391"></a>
-<span class="sourceLineNo">392</span> setCharacterEncoding("UTF-8");<a name="line.392"></a>
-<span class="sourceLineNo">393</span> throw new RestException(SC_NOT_ACCEPTABLE, "Unsupported charset in request header ''Accept-Charset'': ''{0}''", ce);<a name="line.393"></a>
-<span class="sourceLineNo">394</span> }<a name="line.394"></a>
-<span class="sourceLineNo">395</span> }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span> /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span> * Returns the <code>Content-Type</code> header stripped of the charset attribute if present.<a name="line.398"></a>
-<span class="sourceLineNo">399</span> *<a name="line.399"></a>
-<span class="sourceLineNo">400</span> * @return The <code>media-type</code> portion of the <code>Content-Type</code> header.<a name="line.400"></a>
-<span class="sourceLineNo">401</span> */<a name="line.401"></a>
-<span class="sourceLineNo">402</span> public MediaType getMediaType() {<a name="line.402"></a>
-<span class="sourceLineNo">403</span> return MediaType.forString(getContentType());<a name="line.403"></a>
-<span class="sourceLineNo">404</span> }<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> * Redirects to the specified URI.<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> * Relative URIs are always interpreted as relative to the context root.<a name="line.410"></a>
-<span class="sourceLineNo">411</span> * This is similar to how WAS handles redirect requests, and is different from how Tomcat handles redirect requests.<a name="line.411"></a>
-<span class="sourceLineNo">412</span> */<a name="line.412"></a>
-<span class="sourceLineNo">413</span> @Override /* ServletResponse */<a name="line.413"></a>
-<span class="sourceLineNo">414</span> public void sendRedirect(String uri) throws IOException {<a name="line.414"></a>
-<span class="sourceLineNo">415</span> char c = (uri.length() > 0 ? uri.charAt(0) : 0);<a name="line.415"></a>
-<span class="sourceLineNo">416</span> if (c != '/' && uri.indexOf("://") == -1)<a name="line.416"></a>
-<span class="sourceLineNo">417</span> uri = request.getContextPath() + '/' + uri;<a name="line.417"></a>
-<span class="sourceLineNo">418</span> super.sendRedirect(uri);<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> /**<a name="line.421"></a>
-<span class="sourceLineNo">422</span> * Returns the URL-encoding serializer associated with this response.<a name="line.422"></a>
-<span class="sourceLineNo">423</span> *<a name="line.423"></a>
-<span class="sourceLineNo">424</span> * @return The URL-encoding serializer associated with this response.<a name="line.424"></a>
-<span class="sourceLineNo">425</span> */<a name="line.425"></a>
-<span class="sourceLineNo">426</span> public UrlEncodingSerializer getUrlEncodingSerializer() {<a name="line.426"></a>
-<span class="sourceLineNo">427</span> return urlEncodingSerializer;<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> @Override /* ServletResponse */<a name="line.430"></a>
-<span class="sourceLineNo">431</span> public void setHeader(String name, String value) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span> // Jetty doesn't set the content type correctly if set through this method.<a name="line.432"></a>
-<span class="sourceLineNo">433</span> // Tomcat/WAS does.<a name="line.433"></a>
-<span class="sourceLineNo">434</span> if (name.equalsIgnoreCase("Content-Type"))<a name="line.434"></a>
-<span class="sourceLineNo">435</span> super.setContentType(value);<a name="line.435"></a>
-<span class="sourceLineNo">436</span> else<a name="line.436"></a>
-<span class="sourceLineNo">437</span> super.setHeader(name, value);<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> /**<a name="line.440"></a>
-<span class="sourceLineNo">441</span> * Sets the HTML header section contents.<a name="line.441"></a>
-<span class="sourceLineNo">442</span> *<a name="line.442"></a>
-<span class="sourceLineNo">443</span> * <p><a name="line.443"></a>
-<span class="sourceLineNo">444</span> * The format of this value is HTML.<a name="line.444"></a>
-<span class="sourceLineNo">445</span> *<a name="line.445"></a>
-<span class="sourceLineNo">446</span> * <p><a name="line.446"></a>
-<span class="sourceLineNo">447</span> * The page header normally contains the title and description, but this value can be used to override the contents<a name="line.447"></a>
-<span class="sourceLineNo">448</span> * to be whatever you want.<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> * A value of <js>"NONE"</js> can be used to force no header.<a name="line.451"></a>
-<span class="sourceLineNo">452</span> *<a name="line.452"></a>
-<span class="sourceLineNo">453</span> * <p><a name="line.453"></a>
-<span class="sourceLineNo">454</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.454"></a>
-<span class="sourceLineNo">455</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<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 HtmlDoc#header() @HtmlDoc.header()} annotation.<a name="line.458"></a>
-<span class="sourceLineNo">459</span> *<a name="line.459"></a>
-<span class="sourceLineNo">460</span> * @param value<a name="line.460"></a>
-<span class="sourceLineNo">461</span> * The HTML header section contents.<a name="line.461"></a>
-<span class="sourceLineNo">462</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.462"></a>
-<span class="sourceLineNo">463</span> * <p><a name="line.463"></a>
-<span class="sourceLineNo">464</span> * <ul class='doctree'><a name="line.464"></a>
-<span class="sourceLineNo">465</span> * <li class='info'><a name="line.465"></a>
-<span class="sourceLineNo">466</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.466"></a>
-<span class="sourceLineNo">467</span> * waste string concatenation cycles on non-HTML views.<a name="line.467"></a>
-<span class="sourceLineNo">468</span> * </ul><a name="line.468"></a>
-<span class="sourceLineNo">469</span> * @return This object (for method chaining).<a name="line.469"></a>
-<span class="sourceLineNo">470</span> */<a name="line.470"></a>
-<span class="sourceLineNo">471</span> public RestResponse setHtmlHeader(Object value) {<a name="line.471"></a>
-<span class="sourceLineNo">472</span> return setProperty(HtmlDocSerializerContext.HTMLDOC_header, value);<a name="line.472"></a>
-<span class="sourceLineNo">473</span> }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span> /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span> * Sets the links in the HTML nav section.<a name="line.476"></a>
-<span class="sourceLineNo">477</span> *<a name="line.477"></a>
-<span class="sourceLineNo">478</span> * <p><a name="line.478"></a>
-<span class="sourceLineNo">479</span> * The format of this value is a lax-JSON map of key/value pairs where the keys are the link text and the values are<a name="line.479"></a>
-<span class="sourceLineNo">480</span> * relative (to the servlet) or absolute URLs.<a name="line.480"></a>
-<span class="sourceLineNo">481</span> *<a name="line.481"></a>
-<span class="sourceLineNo">482</span> * <p><a name="line.482"></a>
-<span class="sourceLineNo">483</span> * The page links are positioned immediately under the title and text.<a name="line.483"></a>
-<span class="sourceLineNo">484</span> *<a name="line.484"></a>
-<span class="sourceLineNo">485</span> * <p><a name="line.485"></a>
-<span class="sourceLineNo">486</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.486"></a>
-<span class="sourceLineNo">487</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.487"></a>
-<span class="sourceLineNo">488</span> *<a name="line.488"></a>
-<span class="sourceLineNo">489</span> * <p><a name="line.489"></a>
-<span class="sourceLineNo">490</span> * A value of <js>"NONE"</js> can be used to force no value.<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 field can also use URIs of any support type in {@link UriResolver}.<a name="line.493"></a>
-<span class="sourceLineNo">494</span> *<a name="line.494"></a>
-<span class="sourceLineNo">495</span> * <p><a name="line.495"></a>
-<span class="sourceLineNo">496</span> * This is the programmatic equivalent to the {@link HtmlDoc#links() @HtmlDoc.links()} annotation.<a name="line.496"></a>
-<span class="sourceLineNo">497</span> *<a name="line.497"></a>
-<span class="sourceLineNo">498</span> * @param value<a name="line.498"></a>
-<span class="sourceLineNo">499</span> * The HTML nav section links links.<a name="line.499"></a>
-<span class="sourceLineNo">500</span> * <p><a name="line.500"></a>
-<span class="sourceLineNo">501</span> * <ul class='doctree'><a name="line.501"></a>
-<span class="sourceLineNo">502</span> * <li class='info'><a name="line.502"></a>
-<span class="sourceLineNo">503</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.503"></a>
-<span class="sourceLineNo">504</span> * waste string concatenation cycles on non-HTML views.<a name="line.504"></a>
-<span class="sourceLineNo">505</span> * </ul><a name="line.505"></a>
-<span class="sourceLineNo">506</span> * @return This object (for method chaining).<a name="line.506"></a>
-<span class="sourceLineNo">507</span> */<a name="line.507"></a>
-<span class="sourceLineNo">508</span> public RestResponse setHtmlLinks(String[] value) {<a name="line.508"></a>
-<span class="sourceLineNo">509</span> properties.put(HtmlDocSerializerContext.HTMLDOC_links, value);<a name="line.509"></a>
-<span class="sourceLineNo">510</span> return this;<a name="line.510"></a>
-<span class="sourceLineNo">511</span> }<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span> /**<a name="line.513"></a>
-<span class="sourceLineNo">514</span> * Sets the HTML nav section contents.<a name="line.514"></a>
-<span class="sourceLineNo">515</span> *<a name="line.515"></a>
-<span class="sourceLineNo">516</span> * <p><a name="line.516"></a>
-<span class="sourceLineNo">517</span> * The format of this value is HTML.<a name="line.517"></a>
-<span class="sourceLineNo">518</span> *<a name="line.518"></a>
-<span class="sourceLineNo">519</span> * <p><a name="line.519"></a>
-<span class="sourceLineNo">520</span> * The nav section of the page contains the links.<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 format of this value is HTML.<a name="line.523"></a>
-<span class="sourceLineNo">524</span> *<a name="line.524"></a>
-<span class="sourceLineNo">525</span> * <p><a name="line.525"></a>
-<span class="sourceLineNo">526</span> * When a value is specified, the {@link #setHtmlLinks(String[])} value will be ignored.<a name="line.526"></a>
-<span class="sourceLineNo">527</span> *<a name="line.527"></a>
-<span class="sourceLineNo">528</span> * <p><a name="line.528"></a>
-<span class="sourceLineNo">529</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.529"></a>
-<span class="sourceLineNo">530</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.530"></a>
-<span class="sourceLineNo">531</span> *<a name="line.531"></a>
-<span class="sourceLineNo">532</span> * <p><a name="line.532"></a>
-<span class="sourceLineNo">533</span> * A value of <js>"NONE"</js> can be used to force no value.<a name="line.533"></a>
-<span class="sourceLineNo">534</span> *<a name="line.534"></a>
-<span class="sourceLineNo">535</span> * <p><a name="line.535"></a>
-<span class="sourceLineNo">536</span> * This is the programmatic equivalent to the {@link HtmlDoc#nav() @HtmlDoc.nav()} annotation.<a name="line.536"></a>
-<span class="sourceLineNo">537</span> *<a name="line.537"></a>
-<span class="sourceLineNo">538</span> * @param value<a name="line.538"></a>
-<span class="sourceLineNo">539</span> * The HTML nav section contents.<a name="line.539"></a>
-<span class="sourceLineNo">540</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.540"></a>
-<span class="sourceLineNo">541</span> * <p><a name="line.541"></a>
-<span class="sourceLineNo">542</span> * <ul class='doctree'><a name="line.542"></a>
-<span class="sourceLineNo">543</span> * <li class='info'><a name="line.543"></a>
-<span class="sourceLineNo">544</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.544"></a>
-<span class="sourceLineNo">545</span> * waste string concatenation cycles on non-HTML views.<a name="line.545"></a>
-<span class="sourceLineNo">546</span> * </ul><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 RestResponse setHtmlNav(Object value) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span> properties.put(HtmlDocSerializerContext.HTMLDOC_nav, value);<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> * Sets the HTML aside section contents.<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> * The format of this value is HTML.<a name="line.558"></a>
-<span class="sourceLineNo">559</span> *<a name="line.559"></a>
-<span class="sourceLineNo">560</span> * <p><a name="line.560"></a>
-<span class="sourceLineNo">561</span> * The aside section typically floats on the right side of the page.<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> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.564"></a>
-<span class="sourceLineNo">565</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.565"></a>
-<span class="sourceLineNo">566</span> *<a name="line.566"></a>
-<span class="sourceLineNo">567</span> * <p><a name="line.567"></a>
-<span class="sourceLineNo">568</span> * A value of <js>"NONE"</js> can be used to force no value.<a name="line.568"></a>
-<span class="sourceLineNo">569</span> *<a name="line.569"></a>
-<span class="sourceLineNo">570</span> * <p><a name="line.570"></a>
-<span class="sourceLineNo">571</span> * This is the programmatic equivalent to the {@link HtmlDoc#aside() @HtmlDoc.aside()} annotation.<a name="line.571"></a>
-<span class="sourceLineNo">572</span> *<a name="line.572"></a>
-<span class="sourceLineNo">573</span> * @param value<a name="line.573"></a>
-<span class="sourceLineNo">574</span> * The HTML aside section contents.<a name="line.574"></a>
-<span class="sourceLineNo">575</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.575"></a>
-<span class="sourceLineNo">576</span> * <p><a name="line.576"></a>
-<span class="sourceLineNo">577</span> * <ul class='doctree'><a name="line.577"></a>
-<span class="sourceLineNo">578</span> * <li class='info'><a name="line.578"></a>
-<span class="sourceLineNo">579</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to waste<a name="line.579"></a>
-<span class="sourceLineNo">580</span> * string concatenation cycles on non-HTML views.<a name="line.580"></a>
-<span class="sourceLineNo">581</span> * </ul><a name="line.581"></a>
-<span class="sourceLineNo">582</span> * @return This object (for method chaining).<a name="line.582"></a>
-<span class="sourceLineNo">583</span> */<a name="line.583"></a>
-<span class="sourceLineNo">584</span> public RestResponse setHtmlAside(Object value) {<a name="line.584"></a>
-<span class="sourceLineNo">585</span> properties.put(HtmlDocSerializerContext.HTMLDOC_aside, value);<a name="line.585"></a>
-<span class="sourceLineNo">586</span> return this;<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> /**<a name="line.589"></a>
-<span class="sourceLineNo">590</span> * Sets the HTML footer section contents.<a name="line.590"></a>
-<span class="sourceLineNo">591</span> *<a name="line.591"></a>
-<span class="sourceLineNo">592</span> * <p><a name="line.592"></a>
-<span class="sourceLineNo">593</span> * The format of this value is HTML.<a name="line.593"></a>
-<span class="sourceLineNo">594</span> *<a name="line.594"></a>
-<span class="sourceLineNo">595</span> * <p><a name="line.595"></a>
-<span class="sourceLineNo">596</span> * The footer section typically floats on the bottom of the page.<a name="line.596"></a>
-<span class="sourceLineNo">597</span> *<a name="line.597"></a>
-<span class="sourceLineNo">598</span> * <p><a name="line.598"></a>
-<span class="sourceLineNo">599</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.599"></a>
-<span class="sourceLineNo">600</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.600"></a>
-<span class="sourceLineNo">601</span> *<a name="line.601"></a>
-<span class="sourceLineNo">602</span> * <p><a name="line.602"></a>
-<span class="sourceLineNo">603</span> * A value of <js>"NONE"</js> can be used to force no value.<a name="line.603"></a>
-<span class="sourceLineNo">604</span> *<a name="line.604"></a>
-<span class="sourceLineNo">605</span> * <p><a name="line.605"></a>
-<span class="sourceLineNo">606</span> * This is the programmatic equivalent to the {@link HtmlDoc#footer() @HtmlDoc.footer()} annotation.<a name="line.606"></a>
-<span class="sourceLineNo">607</span> *<a name="line.607"></a>
-<span class="sourceLineNo">608</span> * @param value<a name="line.608"></a>
-<span class="sourceLineNo">609</span> * The HTML footer section contents.<a name="line.609"></a>
-<span class="sourceLineNo">610</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.610"></a>
-<span class="sourceLineNo">611</span> * <p><a name="line.611"></a>
-<span class="sourceLineNo">612</span> * <ul class='doctree'><a name="line.612"></a>
-<span class="sourceLineNo">613</span> * <li class='info'><a name="line.613"></a>
-<span class="sourceLineNo">614</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.614"></a>
-<span class="sourceLineNo">615</span> * waste string concatenation cycles on non-HTML views.<a name="line.615"></a>
-<span class="sourceLineNo">616</span> * </ul><a name="line.616"></a>
-<span class="sourceLineNo">617</span> * @return This object (for method chaining).<a name="line.617"></a>
-<span class="sourceLineNo">618</span> */<a name="line.618"></a>
-<span class="sourceLineNo">619</span> public RestResponse setHtmlFooter(Object value) {<a name="line.619"></a>
-<span class="sourceLineNo">620</span> properties.put(HtmlDocSerializerContext.HTMLDOC_footer, value);<a name="line.620"></a>
-<span class="sourceLineNo">621</span> return this;<a name="line.621"></a>
-<span class="sourceLineNo">622</span> }<a name="line.622"></a>
-<span class="sourceLineNo">623</span><a name="line.623"></a>
-<span class="sourceLineNo">624</span> /**<a name="line.624"></a>
-<span class="sourceLineNo">625</span> * Sets the HTML CSS style section contents.<a name="line.625"></a>
-<span class="sourceLineNo">626</span> *<a name="line.626"></a>
-<span class="sourceLineNo">627</span> * <p><a name="line.627"></a>
-<span class="sourceLineNo">628</span> * The format of this value is CSS.<a name="line.628"></a>
-<span class="sourceLineNo">629</span> *<a name="line.629"></a>
-<span class="sourceLineNo">630</span> * <p><a name="line.630"></a>
-<span class="sourceLineNo">631</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.631"></a>
-<span class="sourceLineNo">632</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.632"></a>
-<span class="sourceLineNo">633</span> *<a name="line.633"></a>
-<span class="sourceLineNo">634</span> * <p><a name="line.634"></a>
-<span class="sourceLineNo">635</span> * A value of <js>"NONE"</js> can be used to force no value.<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> * This is the programmatic equivalent to the {@link HtmlDoc#style() @HtmlDoc.style()} annotation.<a name="line.638"></a>
-<span class="sourceLineNo">639</span> *<a name="line.639"></a>
-<span class="sourceLineNo">640</span> * @param value<a name="line.640"></a>
-<span class="sourceLineNo">641</span> * The HTML CSS style section contents.<a name="line.641"></a>
-<span class="sourceLineNo">642</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.642"></a>
-<span class="sourceLineNo">643</span> * <p><a name="line.643"></a>
-<span class="sourceLineNo">644</span> * <ul class='doctree'><a name="line.644"></a>
-<span class="sourceLineNo">645</span> * <li class='info'><a name="line.645"></a>
-<span class="sourceLineNo">646</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.646"></a>
-<span class="sourceLineNo">647</span> * waste string concatenation cycles on non-HTML views.<a name="line.647"></a>
-<span class="sourceLineNo">648</span> * </ul><a name="line.648"></a>
-<span class="sourceLineNo">649</span> * @return This object (for method chaining).<a name="line.649"></a>
-<span class="sourceLineNo">650</span> */<a name="line.650"></a>
-<span class="sourceLineNo">651</span> public RestResponse setHtmlStyle(Object value) {<a name="line.651"></a>
-<span class="sourceLineNo">652</span> properties.put(HtmlDocSerializerContext.HTMLDOC_style, value);<a name="line.652"></a>
-<span class="sourceLineNo">653</span> return this;<a name="line.653"></a>
-<span class="sourceLineNo">654</span> }<a name="line.654"></a>
-<span class="sourceLineNo">655</span><a name="line.655"></a>
-<span class="sourceLineNo">656</span> /**<a name="line.656"></a>
-<span class="sourceLineNo">657</span> * Sets the CSS URL in the HTML CSS style section.<a name="line.657"></a>
-<span class="sourceLineNo">658</span> *<a name="line.658"></a>
-<span class="sourceLineNo">659</span> * <p><a name="line.659"></a>
-<span class="sourceLineNo">660</span> * The format of this value is a comma-delimited list of URLs.<a name="line.660"></a>
-<span class="sourceLineNo">661</span> *<a name="line.661"></a>
-<span class="sourceLineNo">662</span> * <p><a name="line.662"></a>
-<span class="sourceLineNo">663</span> * Specifies the URL to the stylesheet to add as a link in the style tag in the header.<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> * The format of this value is CSS.<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> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>) and can use URL protocols defined<a name="line.669"></a>
-<span class="sourceLineNo">670</span> * by {@link UriResolver}.<a name="line.670"></a>
-<span class="sourceLineNo">671</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.671"></a>
+<span class="sourceLineNo">386</span> private PrintWriter getWriter(boolean raw) throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span> if (w != null)<a name="line.387"></a>
+<span class="sourceLineNo">388</span> return w;<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span> // If plain text requested, override it now.<a name="line.390"></a>
+<span class="sourceLineNo">391</span> if (request.isPlainText())<a name="line.391"></a>
+<span class="sourceLineNo">392</span> setHeader("Content-Type", "text/plain");<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span> try {<a name="line.394"></a>
+<span class="sourceLineNo">395</span> OutputStream out = (raw ? getOutputStream() : getNegotiatedOutputStream());<a name="line.395"></a>
+<span class="sourceLineNo">396</span> w = new PrintWriter(new OutputStreamWriter(out, getCharacterEncoding()));<a name="line.396"></a>
+<span class="sourceLineNo">397</span> return w;<a name="line.397"></a>
+<span class="sourceLineNo">398</span> } catch (UnsupportedEncodingException e) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span> String ce = getCharacterEncoding();<a name="line.399"></a>
+<span class="sourceLineNo">400</span> setCharacterEncoding("UTF-8");<a name="line.400"></a>
+<span class="sourceLineNo">401</span> throw new RestException(SC_NOT_ACCEPTABLE, "Unsupported charset in request header ''Accept-Charset'': ''{0}''", ce);<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><a name="line.404"></a>
+<span class="sourceLineNo">405</span> /**<a name="line.405"></a>
+<span class="sourceLineNo">406</span> * Returns the <code>Content-Type</code> header stripped of the charset attribute if present.<a name="line.406"></a>
+<span class="sourceLineNo">407</span> *<a name="line.407"></a>
+<span class="sourceLineNo">408</span> * @return The <code>media-type</code> portion of the <code>Content-Type</code> header.<a name="line.408"></a>
+<span class="sourceLineNo">409</span> */<a name="line.409"></a>
+<span class="sourceLineNo">410</span> public MediaType getMediaType() {<a name="line.410"></a>
+<span class="sourceLineNo">411</span> return MediaType.forString(getContentType());<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> * Redirects to the specified URI.<a name="line.415"></a>
+<span class="sourceLineNo">416</span> *<a name="line.416"></a>
+<span class="sourceLineNo">417</span> * <p><a name="line.417"></a>
+<span class="sourceLineNo">418</span> * Relative URIs are always interpreted as relative to the context root.<a name="line.418"></a>
+<span class="sourceLineNo">419</span> * This is similar to how WAS handles redirect requests, and is different from how Tomcat handles redirect requests.<a name="line.419"></a>
+<span class="sourceLineNo">420</span> */<a name="line.420"></a>
+<span class="sourceLineNo">421</span> @Override /* ServletResponse */<a name="line.421"></a>
+<span class="sourceLineNo">422</span> public void sendRedirect(String uri) throws IOException {<a name="line.422"></a>
+<span class="sourceLineNo">423</span> char c = (uri.length() > 0 ? uri.charAt(0) : 0);<a name="line.423"></a>
+<span class="sourceLineNo">424</span> if (c != '/' && uri.indexOf("://") == -1)<a name="line.424"></a>
+<span class="sourceLineNo">425</span> uri = request.getContextPath() + '/' + uri;<a name="line.425"></a>
+<span class="sourceLineNo">426</span> super.sendRedirect(uri);<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> /**<a name="line.429"></a>
+<span class="sourceLineNo">430</span> * Returns the URL-encoding serializer associated with this response.<a name="line.430"></a>
+<span class="sourceLineNo">431</span> *<a name="line.431"></a>
+<span class="sourceLineNo">432</span> * @return The URL-encoding serializer associated with this response.<a name="line.432"></a>
+<span class="sourceLineNo">433</span> */<a name="line.433"></a>
+<span class="sourceLineNo">434</span> public UrlEncodingSerializer getUrlEncodingSerializer() {<a name="line.434"></a>
+<span class="sourceLineNo">435</span> return urlEncodingSerializer;<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 /* ServletResponse */<a name="line.438"></a>
+<span class="sourceLineNo">439</span> public void setHeader(String name, String value) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span> // Jetty doesn't set the content type correctly if set through this method.<a name="line.440"></a>
+<span class="sourceLineNo">441</span> // Tomcat/WAS does.<a name="line.441"></a>
+<span class="sourceLineNo">442</span> if (name.equalsIgnoreCase("Content-Type"))<a name="line.442"></a>
+<span class="sourceLineNo">443</span> super.setContentType(value);<a name="line.443"></a>
+<span class="sourceLineNo">444</span> else<a name="line.444"></a>
+<span class="sourceLineNo">445</span> super.setHeader(name, value);<a name="line.445"></a>
+<span class="sourceLineNo">446</span> }<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> * Sets the HTML header section contents.<a name="line.449"></a>
+<span class="sourceLineNo">450</span> *<a name="line.450"></a>
+<span class="sourceLineNo">451</span> * <p><a name="line.451"></a>
+<span class="sourceLineNo">452</span> * The format of this value is HTML.<a name="line.452"></a>
+<span class="sourceLineNo">453</span> *<a name="line.453"></a>
+<span class="sourceLineNo">454</span> * <p><a name="line.454"></a>
+<span class="sourceLineNo">455</span> * The page header normally contains the title and description, but this value can be used to override the contents<a name="line.455"></a>
+<span class="sourceLineNo">456</span> * to be whatever you want.<a name="line.456"></a>
+<span class="sourceLineNo">457</span> *<a name="line.457"></a>
+<span class="sourceLineNo">458</span> * <p><a name="line.458"></a>
+<span class="sourceLineNo">459</span> * A value of <js>"NONE"</js> can be used to force no header.<a name="line.459"></a>
+<span class="sourceLineNo">460</span> *<a name="line.460"></a>
+<span class="sourceLineNo">461</span> * <p><a name="line.461"></a>
+<span class="sourceLineNo">462</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.462"></a>
+<span class="sourceLineNo">463</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.463"></a>
+<span class="sourceLineNo">464</span> *<a name="line.464"></a>
+<span class="sourceLineNo">465</span> * <p><a name="line.465"></a>
+<span class="sourceLineNo">466</span> * This is the programmatic equivalent to the {@link HtmlDoc#header() @HtmlDoc.header()} annotation.<a name="line.466"></a>
+<span class="sourceLineNo">467</span> *<a name="line.467"></a>
+<span class="sourceLineNo">468</span> * @param value<a name="line.468"></a>
+<span class="sourceLineNo">469</span> * The HTML header section contents.<a name="line.469"></a>
+<span class="sourceLineNo">470</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.470"></a>
+<span class="sourceLineNo">471</span> * <p><a name="line.471"></a>
+<span class="sourceLineNo">472</span> * <ul class='doctree'><a name="line.472"></a>
+<span class="sourceLineNo">473</span> * <li class='info'><a name="line.473"></a>
+<span class="sourceLineNo">474</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.474"></a>
+<span class="sourceLineNo">475</span> * waste string concatenation cycles on non-HTML views.<a name="line.475"></a>
+<span class="sourceLineNo">476</span> * </ul><a name="line.476"></a>
+<span class="sourceLineNo">477</span> * @return This object (for method chaining).<a name="line.477"></a>
+<span class="sourceLineNo">478</span> */<a name="line.478"></a>
+<span class="sourceLineNo">479</span> public RestResponse setHtmlHeader(Object value) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span> return setProperty(HtmlDocSerializerContext.HTMLDOC_header, value);<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> * Sets the links in the HTML nav section.<a name="line.484"></a>
+<span class="sourceLineNo">485</span> *<a name="line.485"></a>
+<span class="sourceLineNo">486</span> * <p><a name="line.486"></a>
+<span class="sourceLineNo">487</span> * The format of this value is a lax-JSON map of key/value pairs where the keys are the link text and the values are<a name="line.487"></a>
+<span class="sourceLineNo">488</span> * relative (to the servlet) or absolute URLs.<a name="line.488"></a>
+<span class="sourceLineNo">489</span> *<a name="line.489"></a>
+<span class="sourceLineNo">490</span> * <p><a name="line.490"></a>
+<span class="sourceLineNo">491</span> * The page links are positioned immediately under the title and text.<a name="line.491"></a>
+<span class="sourceLineNo">492</span> *<a name="line.492"></a>
+<span class="sourceLineNo">493</span> * <p><a name="line.493"></a>
+<span class="sourceLineNo">494</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.494"></a>
+<span class="sourceLineNo">495</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.495"></a>
+<span class="sourceLineNo">496</span> *<a name="line.496"></a>
+<span class="sourceLineNo">497</span> * <p><a name="line.497"></a>
+<span class="sourceLineNo">498</span> * A value of <js>"NONE"</js> can be used to force no value.<a name="line.498"></a>
+<span class="sourceLineNo">499</span> *<a name="line.499"></a>
+<span class="sourceLineNo">500</span> * <p><a name="line.500"></a>
+<span class="sourceLineNo">501</span> * This field can also use URIs of any support type in {@link UriResolver}.<a name="line.501"></a>
+<span class="sourceLineNo">502</span> *<a name="line.502"></a>
+<span class="sourceLineNo">503</span> * <p><a name="line.503"></a>
+<span class="sourceLineNo">504</span> * This is the programmatic equivalent to the {@link HtmlDoc#links() @HtmlDoc.links()} annotation.<a name="line.504"></a>
+<span class="sourceLineNo">505</span> *<a name="line.505"></a>
+<span class="sourceLineNo">506</span> * @param value<a name="line.506"></a>
+<span class="sourceLineNo">507</span> * The HTML nav section links links.<a name="line.507"></a>
+<span class="sourceLineNo">508</span> * <p><a name="line.508"></a>
+<span class="sourceLineNo">509</span> * <ul class='doctree'><a name="line.509"></a>
+<span class="sourceLineNo">510</span> * <li class='info'><a name="line.510"></a>
+<span class="sourceLineNo">511</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.511"></a>
+<span class="sourceLineNo">512</span> * waste string concatenation cycles on non-HTML views.<a name="line.512"></a>
+<span class="sourceLineNo">513</span> * </ul><a name="line.513"></a>
+<span class="sourceLineNo">514</span> * @return This object (for method chaining).<a name="line.514"></a>
+<span class="sourceLineNo">515</span> */<a name="line.515"></a>
+<span class="sourceLineNo">516</span> public RestResponse setHtmlLinks(String[] value) {<a name="line.516"></a>
+<span class="sourceLineNo">517</span> properties.put(HtmlDocSerializerContext.HTMLDOC_links, value);<a name="line.517"></a>
+<span class="sourceLineNo">518</span> return this;<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> /**<a name="line.521"></a>
+<span class="sourceLineNo">522</span> * Sets the HTML nav section contents.<a name="line.522"></a>
+<span class="sourceLineNo">523</span> *<a name="line.523"></a>
+<span class="sourceLineNo">524</span> * <p><a name="line.524"></a>
+<span class="sourceLineNo">525</span> * The format of this value is HTML.<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> * The nav section of the page contains the links.<a name="line.528"></a>
+<span class="sourceLineNo">529</span> *<a name="line.529"></a>
+<span class="sourceLineNo">530</span> * <p><a name="line.530"></a>
+<span class="sourceLineNo">531</span> * The format of this value is HTML.<a name="line.531"></a>
+<span class="sourceLineNo">532</span> *<a name="line.532"></a>
+<span class="sourceLineNo">533</span> * <p><a name="line.533"></a>
+<span class="sourceLineNo">534</span> * When a value is specified, the {@link #setHtmlLinks(String[])} value will be ignored.<a name="line.534"></a>
+<span class="sourceLineNo">535</span> *<a name="line.535"></a>
+<span class="sourceLineNo">536</span> * <p><a name="line.536"></a>
+<span class="sourceLineNo">537</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.537"></a>
+<span class="sourceLineNo">538</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.538"></a>
+<span class="sourceLineNo">539</span> *<a name="line.539"></a>
+<span class="sourceLineNo">540</span> * <p><a name="line.540"></a>
+<span class="sourceLineNo">541</span> * A value of <js>"NONE"</js> can be used to force no value.<a name="line.541"></a>
+<span class="sourceLineNo">542</span> *<a name="line.542"></a>
+<span class="sourceLineNo">543</span> * <p><a name="line.543"></a>
+<span class="sourceLineNo">544</span> * This is the programmatic equivalent to the {@link HtmlDoc#nav() @HtmlDoc.nav()} annotation.<a name="line.544"></a>
+<span class="sourceLineNo">545</span> *<a name="line.545"></a>
+<span class="sourceLineNo">546</span> * @param value<a name="line.546"></a>
+<span class="sourceLineNo">547</span> * The HTML nav section contents.<a name="line.547"></a>
+<span class="sourceLineNo">548</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.548"></a>
+<span class="sourceLineNo">549</span> * <p><a name="line.549"></a>
+<span class="sourceLineNo">550</span> * <ul class='doctree'><a name="line.550"></a>
+<span class="sourceLineNo">551</span> * <li class='info'><a name="line.551"></a>
+<span class="sourceLineNo">552</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.552"></a>
+<span class="sourceLineNo">553</span> * waste string concatenation cycles on non-HTML views.<a name="line.553"></a>
+<span class="sourceLineNo">554</span> * </ul><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 RestResponse setHtmlNav(Object value) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span> properties.put(HtmlDocSerializerContext.HTMLDOC_nav, value);<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> * Sets the HTML aside section contents.<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> * The format of this value is HTML.<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> * The aside section typically floats on the right side of the page.<a name="line.569"></a>
+<span class="sourceLineNo">570</span> *<a name="line.570"></a>
+<span class="sourceLineNo">571</span> * <p><a name="line.571"></a>
+<span class="sourceLineNo">572</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.572"></a>
+<span class="sourceLineNo">573</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.573"></a>
+<span class="sourceLineNo">574</span> *<a name="line.574"></a>
+<span class="sourceLineNo">575</span> * <p><a name="line.575"></a>
+<span class="sourceLineNo">576</span> * A value of <js>"NONE"</js> can be used to force no value.<a name="line.576"></a>
+<span class="sourceLineNo">577</span> *<a name="line.577"></a>
+<span class="sourceLineNo">578</span> * <p><a name="line.578"></a>
+<span class="sourceLineNo">579</span> * This is the programmatic equivalent to the {@link HtmlDoc#aside() @HtmlDoc.aside()} annotation.<a name="line.579"></a>
+<span class="sourceLineNo">580</span> *<a name="line.580"></a>
+<span class="sourceLineNo">581</span> * @param value<a name="line.581"></a>
+<span class="sourceLineNo">582</span> * The HTML aside section contents.<a name="line.582"></a>
+<span class="sourceLineNo">583</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.583"></a>
+<span class="sourceLineNo">584</span> * <p><a name="line.584"></a>
+<span class="sourceLineNo">585</span> * <ul class='doctree'><a name="line.585"></a>
+<span class="sourceLineNo">586</span> * <li class='info'><a name="line.586"></a>
+<span class="sourceLineNo">587</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to waste<a name="line.587"></a>
+<span class="sourceLineNo">588</span> * string concatenation cycles on non-HTML views.<a name="line.588"></a>
+<span class="sourceLineNo">589</span> * </ul><a name="line.589"></a>
+<span class="sourceLineNo">590</span> * @return This object (for method chaining).<a name="line.590"></a>
+<span class="sourceLineNo">591</span> */<a name="line.591"></a>
+<span class="sourceLineNo">592</span> public RestResponse setHtmlAside(Object value) {<a name="line.592"></a>
+<span class="sourceLineNo">593</span> properties.put(HtmlDocSerializerContext.HTMLDOC_aside, value);<a name="line.593"></a>
+<span class="sourceLineNo">594</span> return this;<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> /**<a name="line.597"></a>
+<span class="sourceLineNo">598</span> * Sets the HTML footer section contents.<a name="line.598"></a>
+<span class="sourceLineNo">599</span> *<a name="line.599"></a>
+<span class="sourceLineNo">600</span> * <p><a name="line.600"></a>
+<span class="sourceLineNo">601</span> * The format of this value is HTML.<a name="line.601"></a>
+<span class="sourceLineNo">602</span> *<a name="line.602"></a>
+<span class="sourceLineNo">603</span> * <p><a name="line.603"></a>
+<span class="sourceLineNo">604</span> * The footer section typically floats on the bottom of the page.<a name="line.604"></a>
+<span class="sourceLineNo">605</span> *<a name="line.605"></a>
+<span class="sourceLineNo">606</span> * <p><a name="line.606"></a>
+<span class="sourceLineNo">607</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.607"></a>
+<span class="sourceLineNo">608</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.608"></a>
+<span class="sourceLineNo">609</span> *<a name="line.609"></a>
+<span class="sourceLineNo">610</span> * <p><a name="line.610"></a>
+<span class="sourceLineNo">611</span> * A value of <js>"NONE"</js> can be used to force no value.<a name="line.611"></a>
+<span class="sourceLineNo">612</span> *<a name="line.612"></a>
+<span class="sourceLineNo">613</span> * <p><a name="line.613"></a>
+<span class="sourceLineNo">614</span> * This is the programmatic equivalent to the {@link HtmlDoc#footer() @HtmlDoc.footer()} annotation.<a name="line.614"></a>
+<span class="sourceLineNo">615</span> *<a name="line.615"></a>
+<span class="sourceLineNo">616</span> * @param value<a name="line.616"></a>
+<span class="sourceLineNo">617</span> * The HTML footer section contents.<a name="line.617"></a>
+<span class="sourceLineNo">618</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.618"></a>
+<span class="sourceLineNo">619</span> * <p><a name="line.619"></a>
+<span class="sourceLineNo">620</span> * <ul class='doctree'><a name="line.620"></a>
+<span class="sourceLineNo">621</span> * <li class='info'><a name="line.621"></a>
+<span class="sourceLineNo">622</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.622"></a>
+<span class="sourceLineNo">623</span> * waste string concatenation cycles on non-HTML views.<a name="line.623"></a>
+<span class="sourceLineNo">624</span> * </ul><a name="line.624"></a>
+<span class="sourceLineNo">625</span> * @return This object (for method chaining).<a name="line.625"></a>
+<span class="sourceLineNo">626</span> */<a name="line.626"></a>
+<span class="sourceLineNo">627</span> public RestResponse setHtmlFooter(Object value) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span> properties.put(HtmlDocSerializerContext.HTMLDOC_footer, value);<a name="line.628"></a>
+<span class="sourceLineNo">629</span> return this;<a name="line.629"></a>
+<span class="sourceLineNo">630</span> }<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span> /**<a name="line.632"></a>
+<span class="sourceLineNo">633</span> * Sets the HTML CSS style section contents.<a name="line.633"></a>
+<span class="sourceLineNo">634</span> *<a name="line.634"></a>
+<span class="sourceLineNo">635</span> * <p><a name="line.635"></a>
+<span class="sourceLineNo">636</span> * The format of this value is CSS.<a name="line.636"></a>
+<span class="sourceLineNo">637</span> *<a name="line.637"></a>
+<span class="sourceLineNo">638</span> * <p><a name="line.638"></a>
+<span class="sourceLineNo">639</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.639"></a>
+<span class="sourceLineNo">640</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.640"></a>
+<span class="sourceLineNo">641</span> *<a name="line.641"></a>
+<span class="sourceLineNo">642</span> * <p><a name="line.642"></a>
+<span class="sourceLineNo">643</span> * A value of <js>"NONE"</js> can be used to force no value.<a name="line.643"></a>
+<span class="sourceLineNo">644</span> *<a name="line.644"></a>
+<span class="sourceLineNo">645</span> * <p><a name="line.645"></a>
+<span class="sourceLineNo">646</span> * This is the programmatic equivalent to the {@link HtmlDoc#style() @HtmlDoc.style()} annotation.<a name="line.646"></a>
+<span class="sourceLineNo">647</span> *<a name="line.647"></a>
+<span class="sourceLineNo">648</span> * @param value<a name="line.648"></a>
+<span class="sourceLineNo">649</span> * The HTML CSS style section contents.<a name="line.649"></a>
+<span class="sourceLineNo">650</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.650"></a>
+<span class="sourceLineNo">651</span> * <p><a name="line.651"></a>
+<span class="sourceLineNo">652</span> * <ul class='doctree'><a name="line.652"></a>
+<span class="sourceLineNo">653</span> * <li class='info'><a name="line.653"></a>
+<span class="sourceLineNo">654</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.654"></a>
+<span class="sourceLineNo">655</span> * waste string concatenation cycles on non-HTML views.<a name="line.655"></a>
+<span class="sourceLineNo">656</span> * </ul><a name="line.656"></a>
+<span class="sourceLineNo">657</span> * @return This object (for method chaining).<a name="line.657"></a>
+<span class="sourceLineNo">658</span> */<a name="line.658"></a>
+<span class="sourceLineNo">659</span> public RestResponse setHtmlStyle(Object value) {<a name="line.659"></a>
+<span class="sourceLineNo">660</span> properties.put(HtmlDocSerializerContext.HTMLDOC_style, value);<a name="line.660"></a>
+<span class="sourceLineNo">661</span> return this;<a name="line.661"></a>
+<span class="sourceLineNo">662</span> }<a name="line.662"></a>
+<span class="sourceLineNo">663</span><a name="line.663"></a>
+<span class="sourceLineNo">664</span> /**<a name="line.664"></a>
+<span class="sourceLineNo">665</span> * Sets the CSS URL in the HTML CSS style section.<a name="line.665"></a>
+<span class="sourceLineNo">666</span> *<a name="line.666"></a>
+<span class="sourceLineNo">667</span> * <p><a name="line.667"></a>
+<span class="sourceLineNo">668</span> * The format of this value is a comma-delimited list of URLs.<a name="line.668"></a>
+<span class="sourceLineNo">669</span> *<a name="line.669"></a>
+<span class="sourceLineNo">670</span> * <p><a name="line.670"></a>
+<span class="sourceLineNo">671</span> * Specifies the URL to the stylesheet to add as a link in the style tag in the header.<a name="line.671"></a>
<span class="sourceLineNo">672</span> *<a name="line.672"></a>
<span class="sourceLineNo">673</span> * <p><a name="line.673"></a>
-<span class="sourceLineNo">674</span> * This is the programmatic equivalent to the {@link HtmlDoc#stylesheet() @HtmlDoc.stylesheet()} annotation.<a name="line.674"></a>
+<span class="sourceLineNo">674</span> * The format of this value is CSS.<a name="line.674"></a>
<span class="sourceLineNo">675</span> *<a name="line.675"></a>
-<span class="sourceLineNo">676</span> * @param value<a name="line.676"></a>
-<span class="sourceLineNo">677</span> * The CSS URL in the HTML CSS style section.<a name="line.677"></a>
-<span class="sourceLineNo">678</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.678"></a>
-<span class="sourceLineNo">679</span> * <p><a name="line.679"></a>
-<span class="sourceLineNo">680</span> * <ul class='doctree'><a name="line.680"></a>
-<span class="sourceLineNo">681</span> * <li class='info'><a name="line.681"></a>
-<span class="sourceLineNo">682</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.682"></a>
-<span class="sourceLineNo">683</span> * waste string concatenation cycles on non-HTML views.<a name="line.683"></a>
-<span class="sourceLineNo">684</span> * </ul><a name="line.684"></a>
-<span class="sourceLineNo">685</span> * @return This object (for method chaining).<a name="line.685"></a>
-<span class="sourceLineNo">686</span> */<a name="line.686"></a>
-<span class="sourceLineNo">687</span> public RestResponse setHtmlStylesheet(Object value) {<a name="line.687"></a>
-<span class="sourceLineNo">688</span> properties.put(HtmlDocSerializerContext.HTMLDOC_stylesheet, value);<a name="line.688"></a>
-<span class="sourceLineNo">689</span> return this;<a name="line.689"></a>
-<span class="sourceLineNo">690</span> }<a name="line.690"></a>
-<span class="sourceLineNo">691</span><a name="line.691"></a>
-<span class="sourceLineNo">692</span> /**<a name="line.692"></a>
-<span class="sourceLineNo">693</span> * Sets the HTML script section contents.<a name="line.693"></a>
-<span class="sourceLineNo">694</span> *<a name="line.694"></a>
-<span class="sourceLineNo">695</span> * <p><a name="line.695"></a>
-<span class="sourceLineNo">696</span> * The format of this value is Javascript.<a name="line.696"></a>
-<span class="sourceLineNo">697</span> *<a name="line.697"></a>
-<span class="sourceLineNo">698</span> * <p><a name="line.698"></a>
-<span class="sourceLineNo">699</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.699"></a>
-<span class="sourceLineNo">700</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.700"></a>
-<span class="sourceLineNo">701</span> *<a name="line.701"></a>
-<span class="sourceLineNo">702</span> * <p><a name="line.702"></a>
-<span class="sourceLineNo">703</span> * A value of <js>"NONE"</js> can be used to force no value.<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> * This is the programmatic equivalent to the {@link HtmlDoc#script() @HtmlDoc.script()} annotation.<a name="line.706"></a>
-<span class="sourceLineNo">707</span> *<a name="line.707"></a>
-<span class="sourceLineNo">708</span> * @param value<a name="line.708"></a>
-<span class="sourceLineNo">709</span> * The HTML script section contents.<a name="line.709"></a>
-<span class="sourceLineNo">710</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.710"></a>
-<span class="sourceLineNo">711</span> * <p><a name="line.711"></a>
-<span class="sourceLineNo">712</span> * <ul class='doctree'><a name="line.712"></a>
-<span class="sourceLineNo">713</span> * <li class='info'><a name="line.713"></a>
-<span class="sourceLineNo">714</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.714"></a>
-<span class="sourceLineNo">715</span> * waste string concatenation cycles on non-HTML views.<a name="line.715"></a>
-<span class="sourceLineNo">716</span> * </ul><a name="line.716"></a>
-<span class="sourceLineNo">717</span> * @return This object (for method chaining).<a name="line.717"></a>
-<span class="sourceLineNo">718</span> */<a name="line.718"></a>
-<span class="sourceLineNo">719</span> public RestResponse setHtmlScript(Object value) {<a name="line.719"></a>
-<span class="sourceLineNo">720</span> properties.put(HtmlDocSerializerContext.HTMLDOC_script, value);<a name="line.720"></a>
-<span class="sourceLineNo">721</span> return this;<a name="line.721"></a>
-<span class="sourceLineNo">722</span> }<a name="line.722"></a>
-<span class="sourceLineNo">723</span><a name="line.723"></a>
-<span class="sourceLineNo">724</span> /**<a name="line.724"></a>
-<span class="sourceLineNo">725</span> * Shorthand method for forcing the rendered HTML content to be no-wrap.<a name="line.725"></a>
-<span class="sourceLineNo">726</span> *<a name="line.726"></a>
-<span class="sourceLineNo">727</span> * <p><a name="line.727"></a>
-<span class="sourceLineNo">728</span> * This is the programmatic equivalent to the {@link HtmlDoc#nowrap() @HtmlDoc.nowrap()} annotation.<a name="line.728"></a>
-<span class="sourceLineNo">729</span> *<a name="line.729"></a>
-<span class="sourceLineNo">730</span> * @param value The new nowrap setting.<a name="line.730"></a>
-<span class="sourceLineNo">731</span> * @return This object (for method chaining).<a name="line.731"></a>
-<span class="sourceLineNo">732</span> */<a name="line.732"></a>
-<span class="sourceLineNo">733</span> public RestResponse setHtmlNoWrap(boolean value) {<a name="line.733"></a>
-<span class="sourceLineNo">734</span> properties.put(HtmlDocSerializerContext.HTMLDOC_nowrap, value);<a name="line.734"></a>
-<span class="sourceLineNo">735</span> return this;<a name="line.735"></a>
-<span class="sourceLineNo">736</span> }<a name="line.736"></a>
-<span class="sourceLineNo">737</span><a name="line.737"></a>
-<span class="sourceLineNo">738</span> /**<a name="line.738"></a>
-<span class="sourceLineNo">739</span> * Specifies the text to display when serializing an empty array or collection.<a name="line.739"></a>
-<span class="sourceLineNo">740</span> *<a name="line.740"></a>
-<span class="sourceLineNo">741</span> * <p><a name="line.741"></a>
-<span class="sourceLineNo">742</span> * This is the programmatic equivalent to the {@link HtmlDoc#noResultsMessage() @HtmlDoc.noResultsMessage()}<a name="line.742"></a>
-<span class="sourceLineNo">743</span> * annotation.<a name="line.743"></a>
-<span class="sourceLineNo">744</span> *<a name="line.744"></a>
-<span class="sourceLineNo">745</span> * @param value The text to display when serializing an empty array or collection.<a name="line.745"></a>
-<span class="sourceLineNo">746</span> * @return This object (for method chaining).<a name="line.746"></a>
-<span class="sourceLineNo">747</span> */<a name="line.747"></a>
-<span class="sourceLineNo">748</span> public RestResponse setHtmlNoResultsMessage(Object value) {<a name="line.748"></a>
-<span class="sourceLineNo">749</span> properties.put(HtmlDocSerializerContext.HTMLDOC_noResultsMessage, value);<a name="line.749"></a>
-<span class="sourceLineNo">750</span> return this;<a name="line.750"></a>
-<span class="sourceLineNo">751</span> }<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> * Specifies the template class to use for rendering the HTML page.<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> * By default, uses {@link HtmlDocTemplateBasic} to render the contents, although you can provide your own custom<a name="line.757"></a>
-<span class="sourceLineNo">758</span> * renderer or subclasses from the basic class to have full control over how the page is rendered.<a name="line.758"></a>
-<span class="sourceLineNo">759</span> *<a name="line.759"></a>
-<span class="sourceLineNo">760</span> * <p><a name="line.760"></a>
-<span class="sourceLineNo">761</span> * This is the programmatic equivalent to the {@link HtmlDoc#template() @HtmlDoc.template()} annotation.<a name="line.761"></a>
-<span class="sourceLineNo">762</span> *<a name="line.762"></a>
-<span class="sourceLineNo">763</span> * @param value The HTML page template to use to render the HTML page.<a name="line.763"></a>
-<span class="sourceLineNo">764</span> * @return This object (for method chaining).<a name="line.764"></a>
-<span class="sourceLineNo">765</span> */<a name="line.765"></a>
-<span class="sourceLineNo">766</span> public RestResponse setHtmlTemplate(Class<? extends HtmlDocTemplate> value) {<a name="line.766"></a>
-<span class="sourceLineNo">767</span> properties.put(HtmlDocSerializerContext.HTMLDOC_template, value);<a name="line.767"></a>
-<span class="sourceLineNo">768</span> return this;<a name="line.768"></a>
-<span class="sourceLineNo">769</span> }<a name="line.769"></a>
-<span class="sourceLineNo">770</span><a name="line.770"></a>
-<span class="sourceLineNo">771</span> /**<a name="line.771"></a>
-<span class="sourceLineNo">772</span> * Specifies the template class to use for rendering the HTML page.<a name="line.772"></a>
-<span class="sourceLineNo">773</span> *<a name="line.773"></a>
-<span class="sourceLineNo">774</span> * <p><a name="line.774"></a>
-<span class="sourceLineNo">775</span> * By default, uses {@link HtmlDocTemplateBasic} to render the contents, although you can provide your own custom<a name="line.775"></a>
-<span class="sourceLineNo">776</span> * renderer or subclasses from the basic class to have full control over how the page is rendered.<a name="line.776"></a>
-<span class="sourceLineNo">777</span> *<a name="line.777"></a>
-<span class="sourceLineNo">778</span> * <p><a name="line.778"></a>
-<span class="sourceLineNo">779</span> * This is the programmatic equivalent to the {@link HtmlDoc#template() @HtmlDoc.template()} annotation.<a name="line.779"></a>
-<span class="sourceLineNo">780</span> *<a name="line.780"></a>
-<span class="sourceLineNo">781</span> * @param value The HTML page template to use to render the HTML page.<a name="line.781"></a>
-<span class="sourceLineNo">782</span> * @return This object (for method chaining).<a name="line.782"></a>
-<span class="sourceLineNo">783</span> */<a name="line.783"></a>
-<span class="sourceLineNo">784</span> public RestResponse setHtmlTemplate(HtmlDocTemplate value) {<a name="line.784"></a>
-<span class="sourceLineNo">785</span> properties.put(HtmlDocSerializerContext.HTMLDOC_template, value);<a name="line.785"></a>
-<span class="sourceLineNo">786</span> return this;<a name="line.786"></a>
-<span class="sourceLineNo">787</span> }<a name="line.787"></a>
-<span class="sourceLineNo">788</span><a name="line.788"></a>
-<span class="sourceLineNo">789</span> @Override /* ServletResponse */<a name="line.789"></a>
-<span class="sourceLineNo">790</span> public void flushBuffer() throws IOException {<a name="line.790"></a>
-<span class="sourceLineNo">791</span> if (w != null)<a name="line.791"></a>
-<span class="sourceLineNo">792</span> w.flush();<a name="line.792"></a>
-<span class="sourceLineNo">793</span> if (os != null)<a name="line.793"></a>
-<span class="sourceLineNo">794</span> os.flush();<a name="line.794"></a>
-<span class="sourceLineNo">795</span> super.flushBuffer();<a name="line.795"></a>
-<span class="sourceLineNo">796</span> }<a name="line.796"></a>
-<span class="sourceLineNo">797</span>}<a name="line.797"></a>
+<span class="sourceLineNo">676</span> * <p><a name="line.676"></a>
+<span class="sourceLineNo">677</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>) and can use URL protocols defined<a name="line.677"></a>
+<span class="sourceLineNo">678</span> * by {@link UriResolver}.<a name="line.678"></a>
+<span class="sourceLineNo">679</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<a name="line.679"></a>
+<span class="sourceLineNo">680</span> *<a name="line.680"></a>
+<span class="sourceLineNo">681</span> * <p><a name="line.681"></a>
+<span class="sourceLineNo">682</span> * This is the programmatic equivalent to the {@link HtmlDoc#stylesheet() @HtmlDoc.stylesheet()} annotation.<a name="line.682"></a>
+<span class="sourceLineNo">683</span> *<a name="line.683"></a>
+<span class="sourceLineNo">684</span> * @param value<a name="line.684"></a>
+<span class="sourceLineNo">685</span> * The CSS URL in the HTML CSS style section.<a name="line.685"></a>
+<span class="sourceLineNo">686</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.686"></a>
+<span class="sourceLineNo">687</span> * <p><a name="line.687"></a>
+<span class="sourceLineNo">688</span> * <ul class='doctree'><a name="line.688"></a>
+<span class="sourceLineNo">689</span> * <li class='info'><a name="line.689"></a>
+<span class="sourceLineNo">690</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.690"></a>
+<span class="sourceLineNo">691</span> * waste string concatenation cycles on non-HTML views.<a name="line.691"></a>
+<span class="sourceLineNo">692</span> * </ul><a name="line.692"></a>
+<span class="sourceLineNo">693</span> * @return This object (for method chaining).<a name="line.693"></a>
+<span class="sourceLineNo">694</span> */<a name="line.694"></a>
+<span class="sourceLineNo">695</span> public RestResponse setHtmlStylesheet(Object value) {<a name="line.695"></a>
+<span class="sourceLineNo">696</span> properties.put(HtmlDocSerializerContext.HTMLDOC_stylesheet, value);<a name="line.696"></a>
+<span class="sourceLineNo">697</span> return this;<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> /**<a name="line.700"></a>
+<span class="sourceLineNo">701</span> * Sets the HTML script section contents.<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> * The format of this value is Javascript.<a name="line.704"></a>
+<span class="sourceLineNo">705</span> *<a name="line.705"></a>
+<span class="sourceLineNo">706</span> * <p><a name="line.706"></a>
+<span class="sourceLineNo">707</span> * This field can contain variables (e.g. <js>"$L{my.localized.variable}"</js>).<a name="line.707"></a>
+<span class="sourceLineNo">708</span> * <br>See {@link RestContext#getVarResolver()} for the list of supported variables.<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> * A value of <js>"NONE"</js> can be used to force no value.<a name="line.711"></a>
+<span class="sourceLineNo">712</span> *<a name="line.712"></a>
+<span class="sourceLineNo">713</span> * <p><a name="line.713"></a>
+<span class="sourceLineNo">714</span> * This is the programmatic equivalent to the {@link HtmlDoc#script() @HtmlDoc.script()} annotation.<a name="line.714"></a>
+<span class="sourceLineNo">715</span> *<a name="line.715"></a>
+<span class="sourceLineNo">716</span> * @param value<a name="line.716"></a>
+<span class="sourceLineNo">717</span> * The HTML script section contents.<a name="line.717"></a>
+<span class="sourceLineNo">718</span> * Object will be converted to a string using {@link Object#toString()}.<a name="line.718"></a>
+<span class="sourceLineNo">719</span> * <p><a name="line.719"></a>
+<span class="sourceLineNo">720</span> * <ul class='doctree'><a name="line.720"></a>
+<span class="sourceLineNo">721</span> * <li class='info'><a name="line.721"></a>
+<span class="sourceLineNo">722</span> * <b>Tip:</b> Use {@link StringMessage} to generate value with delayed serialization so as not to<a name="line.722"></a>
+<span class="sourceLineNo">723</span> * waste string concatenation cycles on non-HTML views.<a name="line.723"></a>
+<span class="sourceLineNo">724</span> * </ul><a name="line.724"></a>
+<span class="sourceLineNo">725</span> * @return This object (for method chaining).<a name="line.725"></a>
+<span class="sourceLineNo">726</span> */<a name="line.726"></a>
+<span class="sourceLineNo">727</span> public RestResponse setHtmlScript(Object value) {<a name="line.727"></a>
+<span class="sourceLineNo">728</span> properties.put(HtmlDocSerializerContext.HTMLDOC_script, value);<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> /**<a name="line.732"></a>
+<span class="sourceLineNo">733</span> * Shorthand method for forcing the rendered HTML content to be no-wrap.<a name="line.733"></a>
+<span class="sourceLineNo">734</span> *<a name="line.734"></a>
+<span class="sourceLineNo">735</span> * <p><a name="line.735"></a>
+<span class="sourceLineNo">736</span> * This is the programmatic equivalent to the {@link HtmlDoc#nowrap() @HtmlDoc.nowrap()} annotation.<a name="line.736"></a>
+<span class="sourceLineNo">737</span> *<a name="line.737"></a>
+<span class="sourceLineNo">738</span> * @param value The new nowrap setting.<a name="line.738"></a>
+<span class="sourceLineNo">739</span> * @return This object (for method chaining).<a name="line.739"></a>
+<span class="sourceLineNo">740</span> */<a name="line.740"></a>
+<span class="sourceLineNo">741</span> public RestRespons
<TRUNCATED>
[21/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 2f8cd54..cee508e 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestConfig.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestConfig.html
@@ -112,7 +112,7 @@ var activeTableTab = "activeTableTab";
</dl>
<hr>
<br>
-<pre>public class <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.83">RestConfig</a>
+<pre>public class <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.84">RestConfig</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>
implements <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></pre>
<div class="block">Defines the initial configuration of a <code>RestServlet</code> or <code>@RestResource</code> annotated object.
@@ -625,7 +625,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.144">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.145">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.
@@ -655,7 +655,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.308">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.339">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>
@@ -697,7 +697,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.333">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.364">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.
@@ -728,7 +728,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.349">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.380">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>
@@ -749,7 +749,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.364">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.395">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.
@@ -770,7 +770,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.381">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.412">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>
@@ -792,7 +792,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.400">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.431">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>
@@ -816,7 +816,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.418">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.449">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>
@@ -839,7 +839,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.433">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.464">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>
@@ -859,7 +859,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.449">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.480">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>
@@ -879,7 +879,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.465">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.496">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>
@@ -899,7 +899,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.484">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.515">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>
@@ -923,7 +923,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.507">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.538">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>
@@ -951,7 +951,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.525">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.556">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>
@@ -974,7 +974,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.548">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.579">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>
@@ -1002,7 +1002,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.569">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.600">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>
@@ -1028,7 +1028,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.583">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.614">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>
@@ -1047,7 +1047,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.613">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.644">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>
@@ -1082,7 +1082,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.627">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.658">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>
@@ -1101,7 +1101,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.645">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.676">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>
@@ -1124,7 +1124,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.659">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.690">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>
@@ -1143,7 +1143,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.680">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.711">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>
@@ -1169,7 +1169,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.704">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.735">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.
@@ -1196,7 +1196,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.725">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.756">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.
@@ -1224,7 +1224,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.754">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.785">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.
@@ -1254,7 +1254,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.774">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.805">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.
@@ -1281,7 +1281,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.808">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.839">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>
@@ -1315,7 +1315,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.822">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.853">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>
@@ -1334,7 +1334,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.840">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.871">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.
@@ -1358,7 +1358,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.858">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.889">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>
@@ -1381,7 +1381,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.876">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.907">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>
@@ -1404,7 +1404,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.893">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.924">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>
@@ -1426,7 +1426,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.912">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.943">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>
@@ -1448,7 +1448,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.929">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.960">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>
@@ -1470,7 +1470,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.948">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.979">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>
@@ -1492,7 +1492,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.970">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.1001">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>
@@ -1519,7 +1519,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.991">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.1022">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>.
@@ -1545,7 +1545,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.1014">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.1045">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.
@@ -1573,7 +1573,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.1036">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.1067">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>
@@ -1598,7 +1598,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.1050">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.1081">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>
@@ -1617,7 +1617,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<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.1064">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.1095">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>
@@ -1636,7 +1636,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.1081">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.1112">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>
@@ -1656,7 +1656,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.1109">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.1140">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>
@@ -1689,7 +1689,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.1140">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.1171">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>
@@ -1725,7 +1725,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.1173">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.1204">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>
@@ -1763,7 +1763,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.1200">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.1231">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>
@@ -1795,7 +1795,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.1227">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.1258">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>
@@ -1827,7 +1827,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setHtmlStyle</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.1251">setHtmlStyle</a>(<a href="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.1282">setHtmlStyle</a>(<a href="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 CSS style section contents.
<p>
@@ -1856,7 +1856,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setHtmlStylesheet</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.1279">setHtmlStylesheet</a>(<a href="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.1310">setHtmlStylesheet</a>(<a href="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 CSS URL in the HTML CSS style section.
<p>
@@ -1889,7 +1889,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setHtmlScript</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.1303">setHtmlScript</a>(<a href="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.1334">setHtmlScript</a>(<a href="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 script section contents.
<p>
@@ -1918,7 +1918,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setHtmlNoWrap</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.1317">setHtmlNoWrap</a>(boolean 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.1348">setHtmlNoWrap</a>(boolean value)</pre>
<div class="block">Shorthand method for forcing the rendered HTML content to be no-wrap.
<p>
@@ -1937,7 +1937,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setHtmlNoResultsMessage</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.1332">setHtmlNoResultsMessage</a>(<a href="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">setHtmlNoResultsMessage</a>(<a href="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">Specifies the text to display when serializing an empty array or collection.
<p>
@@ -1957,7 +1957,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setHtmlTemplate</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.1350">setHtmlTemplate</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/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</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.1381">setHtmlTemplate</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/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a>> value)</pre>
<div class="block">Specifies the template class to use for rendering the HTML page.
<p>
@@ -1980,7 +1980,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setHtmlTemplate</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.1368">setHtmlTemplate</a>(<a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</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.1399">setHtmlTemplate</a>(<a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a> value)</pre>
<div class="block">Specifies the template class to use for rendering the HTML page.
<p>
@@ -2003,7 +2003,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>addHtmlWidget</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.1383">addHtmlWidget</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/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</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.1414">addHtmlWidget</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/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a>> value)</pre>
<div class="block">Defines widgets that can be used in conjunction with string variables of the form <js>"$W{name}"</js>to quickly
generate arbitrary replacement text.
@@ -2023,7 +2023,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setLogger</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.1397">setLogger</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/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a>> logger)</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.1428">setLogger</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/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a>> logger)</pre>
<div class="block">Overrides the logger for the resource.
<p>
@@ -2042,7 +2042,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setLogger</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.1411">setLogger</a>(<a href="../../../../org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a> logger)</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.1442">setLogger</a>(<a href="../../../../org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a> logger)</pre>
<div class="block">Overrides the logger for the resource.
<p>
@@ -2061,7 +2061,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setCallHandler</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.1430">setCallHandler</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/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a>> restHandler)</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.1461">setCallHandler</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/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a>> restHandler)</pre>
<div class="block">Overrides the call handler for the resource.
<p>
@@ -2085,7 +2085,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setCallHandler</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.1449">setCallHandler</a>(<a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a> restHandler)</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.1480">setCallHandler</a>(<a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a> restHandler)</pre>
<div class="block">Overrides the call handler for the resource.
<p>
@@ -2109,7 +2109,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setInfoProvider</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.1468">setInfoProvider</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/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a>> infoProvider)</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.1499">setInfoProvider</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/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a>> infoProvider)</pre>
<div class="block">Overrides the info provider for the resource.
<p>
@@ -2133,7 +2133,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>setInfoProvider</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.1487">setInfoProvider</a>(<a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a> infoProvider)</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.1518">setInfoProvider</a>(<a href="../../../../org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a> infoProvider)</pre>
<div class="block">Overrides the info provider for the resource.
<p>
@@ -2157,7 +2157,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>createPropertyStore</h4>
-<pre>protected <a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a> <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1497">createPropertyStore</a>()</pre>
+<pre>protected <a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a> <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1528">createPropertyStore</a>()</pre>
<div class="block">Creates a new <a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau"><code>PropertyStore</code></a> object initialized with the properties defined in this config.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -2171,7 +2171,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<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/RestConfig.html#line.1524">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/RestConfig.html#line.1555">getConfigFile</a>()</pre>
<div class="block">Returns the external configuration file for this resource.
<p>
@@ -2198,7 +2198,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<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/RestConfig.html#line.1546">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/RestConfig.html#line.1577">getProperties</a>()</pre>
<div class="block">Returns the configuration properties for this resource.
<p>
@@ -2212,7 +2212,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<p>
These properties can be modified during servlet initialization.
- However, any modifications made after <a href="../../../../org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-"><code>RestServlet.init(RestConfig)</code></a> has been called will have no effect.</div>
+ However, any modifications made after <a href="../../../../org/apache/juneau/rest/RestServlet.html#init-javax.servlet.ServletConfig-"><code>RestServlet.init(ServletConfig)</code></a> has been called will have no effect.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The configuration properties for this resource. Never <jk>null</jk>.</dd>
@@ -2225,7 +2225,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>getVarResolverBuilder</h4>
-<pre>public <a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a> <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1569">getVarResolverBuilder</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/svl/VarResolverBuilder.html" title="class in org.apache.juneau.svl">VarResolverBuilder</a> <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1600">getVarResolverBuilder</a>()</pre>
<div class="block">Creates the variable resolver for this resource.
<p>
@@ -2253,7 +2253,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>getInitParameter</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/RestConfig.html#line.1579">getInitParameter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> 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/RestConfig.html#line.1610">getInitParameter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><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">getInitParameter</a></code> in interface <code><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></code></dd>
@@ -2266,7 +2266,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>getInitParameterNames</h4>
-<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Enumeration.html?is-external=true" title="class or interface in java.util">Enumeration</a><<a href="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/RestConfig.html#line.1584">getInitParameterNames</a>()</pre>
+<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Enumeration.html?is-external=true" title="class or interface in java.util">Enumeration</a><<a href="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/RestConfig.html#line.1615">getInitParameterNames</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletConfig.html?is-external=true#getInitParameterNames--" title="class or interface in javax.servlet">getInitParameterNames</a></code> in interface <code><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></code></dd>
@@ -2279,7 +2279,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockList">
<li class="blockList">
<h4>getServletContext</h4>
-<pre>public <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> <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1589">getServletContext</a>()</pre>
+<pre>public <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> <a href="../../../../src-html/org/apache/juneau/rest/RestConfig.html#line.1620">getServletContext</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletConfig.html?is-external=true#getServletContext--" title="class or interface in javax.servlet">getServletContext</a></code> in interface <code><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></code></dd>
@@ -2292,7 +2292,7 @@ implements <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletCon
<ul class="blockListLast">
<li class="blockList">
<h4>getServletName</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/RestConfig.html#line.1594">getServletName</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/RestConfig.html#line.1625">getServletName</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletConfig.html?is-external=true#getServletName--" title="class or interface in javax.servlet">getServletName</a></code> in interface <code><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></code></dd>
[16/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/jaxrs/package-summary.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/jaxrs/package-summary.html b/content/site/apidocs/org/apache/juneau/rest/jaxrs/package-summary.html
index 21eb15b..dc5fc26 100644
--- a/content/site/apidocs/org/apache/juneau/rest/jaxrs/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/rest/jaxrs/package-summary.html
@@ -71,7 +71,7 @@
<div class="header">
<h1 title="Package" class="title">Package org.apache.juneau.rest.jaxrs</h1>
<div class="docSummary">
-<div class="block">JAX-RS / Wink integration components</div>
+<div class="block">JAX-RS integration components</div>
</div>
<p>See: <a href="#package.description">Description</a></p>
</div>
@@ -122,7 +122,7 @@
<!-- -->
</a>
<h2 title="Package org.apache.juneau.rest.jaxrs Description">Package org.apache.juneau.rest.jaxrs Description</h2>
-<div class="block"><p>JAX-RS / Wink integration components</p>
+<div class="block"><p>JAX-RS integration components</p>
<script>
function toggle(x) {
@@ -217,239 +217,6 @@
For the most part, when using these components, you'll either use the existing <code>DefaultProvider</code> or
<code>JuneauProvider</code> providers, or define your own by subclassing <code>BaseProvider</code>.
- <h6 class='topic'>Example:</h6>
- <p>
- The <code>juneau_sample.war</code> project contains a sample <code>HelloWorldResource</code> class that
- shows how to use the JAX-RS provider. It uses Wink as the JAX-RS implementation.
- </p>
- <p>
- Wink is configured by registering the following servlet in the <code>web.xml</code> file of the web app:
- </p>
- <p class='bcode'>
- <xt><?xml</xt> <xa>version</xa>=<xs>"1.0"</xs> <xa>encoding</xa>=<xs>"UTF-8"</xs><xt>?></xt>
- <xt><web-app</xt> <xa>version</xa>=<xs>"2.3"</xs><xt>></xt>
- <xt><servlet></xt>
- <xt><servlet-name></xt>WinkService<xt></servlet-name></xt>
- <xt><servlet-class></xt>org.apache.wink.server.internal.servlet.RestServlet<xt></servlet-class></xt>
- <xt><init-param></xt>
- <xt><param-name></xt>applicationConfigLocation<xt></param-name></xt>
- <xt><param-value></xt>/WEB-INF/wink.cfg<xt></param-value></xt>
- <xt></init-param></xt>
- <xt></servlet></xt>
- <xt><servlet-mapping></xt>
- <xt><servlet-name></xt>WinkService<xt></servlet-name></xt>
- <xt><url-pattern></xt>/wink/*<xt></url-pattern></xt>
- <xt></servlet-mapping></xt>
- <xt></web-app></xt>
- </p>
- <p>
- The <code>wink.cfg</code> file lists our default provider and our sample resource:
- </p>
- <p class='bcode'>
- org.apache.juneau.rest.jaxrs.DefaultProvider
- com.foo.sample.jaxrs.HelloWorldResource
- </p>
- <p>
- Interestingly, the <code>DefaultProvider</code> itself is a subclass of <code>BaseProvider</code>
- with no code at all. It consists of annotations only:
- </p>
- <p class='bcode'>
- <ja>@Provider</ja>
- <ja>@Produces</ja>(
- <js>"application/json,text/json,"</js>+ <jc>// JsonSerializer</jc>
- <js>"application/json+schema,text/json+schema,"</js>+ <jc>// JsonSchemaSerializer</jc>
- <js>"text/xml,"</js>+ <jc>// XmlDocSerializer</jc>
- <js>"text/xml+schema,"</js>+ <jc>// XmlDocSerializer</jc>
- <js>"text/html,"</js>+ <jc>// HtmlDocSerializer</jc>
- <js>"application/x-www-form-urlencoded,"</js>+ <jc>// UrlEncodingSerializer</jc>
- <js>"text/xml+soap,"</js>+ <jc>// SoapXmlSerializer</jc>
- <js>"text/xml+rdf,"</js>+ <jc>// RdfXmlDocSerializer</jc>
- <js>"application/x-java-serialized-object"</js> <jc>// JavaSerializedObjectSerializer</jc>
- )
- <ja>@Consumes</ja>(
- <js>"application/json,text/json,"</js>+ <jc>// JsonParser</jc>
- <js>"text/xml,"</js>+ <jc>// XmlParser</jc>
- <js>"text/html,"</js>+ <jc>// HtmlParser</jc>
- <js>"application/x-www-form-urlencoded"</js> <jc>// UrlEncodingParser</jc>
- )
- <ja>@JuneauProvider</ja>(
- serializers={
- JsonSerializer.<jk>class</jk>,
- JsonSchemaSerializer.<jk>class</jk>,
- XmlDocSerializer.<jk>class</jk>,
- XmlSchemaDocSerializer.<jk>class</jk>,
- HtmlDocSerializer.<jk>class</jk>,
- UrlEncodingSerializer.<jk>class</jk>,
- SoapXmlSerializer.<jk>class</jk>,
- RdfXmlDocSerializer.<jk>class</jk>,
- JavaSerializedObjectSerializer.<jk>class</jk>
- },
- parsers={
- JsonParser.<jk>class</jk>,
- XmlParser.<jk>class</jk>,
- HtmlParser.<jk>class</jk>,
- UrlEncodingParser.<jk>class</jk>
- }
- )
- <jk>public final class</jk> DefaultProvider <jk>extends</jk> BaseProvider {}
- </p>
- <p>
- Similarly, if you're defining your own JAX-RS provider, you can do so using annotations only.
- </p>
- <p>
- <p>
- Our sample resource is shown below.
- In this example, we've specified a <code><ja>@RestMethod</ja></code> annotation on the
- getter to show how properties can be overridden on the serializers/parsers at the method level.
- This annotation is optional.
- </p>
-
- <p class='bcode'>
- <ja>@Path</ja>(<js>"/helloworld"</js>)
- <jk>public class</jk> HelloWorldResource {
-
- <jc>// Our bean message class</jc>
- <jk>public static class</jk> Message {
-
- <jc>// No-arg bean constructor (needed for parsers)</jc>
- <jk>public</jk> Message() {}
-
- <jk>public</jk> Message(String text, String author) {
- <jk>this</jk>.text = text;
- <jk>this</jk>.author = author;
- }
-
- <jk>public</jk> String text;
- <jk>public</jk> String author;
- }
-
- <jk>private static</jk> Message message = <jk>new</jk> Message(<js>"Hello world"</js>, <js>"John Smith"</js>);
-
- <ja>@GET</ja>
- <ja>@Produces</ja>(<js>"*/*"</js>)
- <ja>@RestMethod</ja>( <jc>/* Override some properties */</jc>
- properties={
- <ja>@Property</ja>(name=SerializerContext.<jsf>SERIALIZER_useWhitespace</jsf>, value=<js>"true"</js>),
- <ja>@Property</ja>(name=JsonSerializerContext.<jsf>LAX_MODE</jsf>, value=<js>"true"</js>)
- }
- )
- <jk>public</jk> Message getMessage() {
- <jk>return</jk> message;
- }
-
- <ja>@PUT</ja>
- <ja>@Produces</ja>(<js>"*/*"</js>)
- <ja>@Consumes</ja>(<js>"*/*"</js>)
- <jk>public</jk> Message replaceMessage(Message message) {
- HelloWorldResource.message = message;
- <jk>return</jk> message;
- }
- }
- </p>
- <p>
- When we start up the servlet, we can interact with the resource using cURL.
- In these examples, note that the <jsf>SERIALIZER_useWhitespace</jsf> and <jsf>LAX_MODE</jsf> settings
- cause the output to be readable instead of condensed.
- </p>
- <p class='bcode'>
- C:\>curl.exe -H "Accept: text/json" -X GET http://localhost:9080/sample/wink/helloworld
- <ja>{
- text:"Hello world",
- author:"John Smith"
- }</ja>
- </p>
- <p class='bcode'>
- C:\>curl.exe -H "Accept: text/html" -X GET http://localhost:9080/sample/wink/helloworld
- <ja><html>
- <head>
- </head>
- <body>
- <table type="object">
- <tr>
- <th>
- <string>key</string>
- </th>
- <th>
- <string>value</string>
- </th>
- </tr>
- <tr>
- <td>
- <string>text</string>
- </td>
- <td>
- <string>Hello world</string>
- </td>
- </tr>
- <tr>
- <td>
- <string>author</string>
- </td>
- <td>
- <string>John Smith</string>
- </td>
- </tr>
- </table>
- </body>
- </html></ja>
- </p>
- <p class='bcode'>
- C:\>curl.exe -H "Accept: text/xml" -X GET http://localhost:9080/sample/wink/helloworld
- <ja><?xml version="1.0" encoding="UTF-8"?>
- <object>
- <text>Hello world</text>
- <author>John Smith</author>
- </object></ja>
- </p>
- <p class='bcode'>
- C:\>curl.exe -H "Accept: application/x-www-form-urlencoded" -X GET http://localhost:9080/sample/wink/helloworld
- <ja>text='Hello+world'&author='John+Smith'</ja>
- </p>
- <p class='bcode'>
- C:\>curl.exe -H "Accept: text/xml+schema" -X GET http://localhost:9080/sample/wink/helloworld
- <ja><?xml version="1.0" encoding="UTF-8"?>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <xs:element name="object" nillable="true">
- <xs:complexType>
- <xs:sequence minOccurs="0" maxOccurs="unbounded">
- <xs:element name="text" type="xs:string" nillable="true" minOccurs="0"/>
- <xs:element name="author" type="xs:string" nillable="true" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="null"/>
- </xs:schema></ja>
- </p>
- <p class='bcode'>
- C:\>curl.exe -H "Accept: application/x-java-serialized-object" -X GET http://localhost:9080/sample/wink/helloworld
- <ja>detailMessaget ↕Ljava/lang/String;[ ption(Vx τå▬5☻ xr ↔java.io.ObjectStreamExceptiond├Σkì9√▀☻ xr ‼java.io.IOExcept
- stackTracet ▲[Ljava/lang/StackTraceElement;xpq t /org.apache.juneau.samples.jaxrs.HelloWorldResource$Messageur ▲[Ljava.lang.Sta
- lineNumberL ♫declaringClassq ~ ♠LfileNameq ~ ♠L
- methodNameq ~ ♠xp ♦át →java.io.ObjectOutputStreamt ↨ObjectOutputStream.javat ♀writeObject0sq ~ ♀ ☺[t →java.io.Obje
- 3org.apache.juneau.serializer.OutputStreamSerializert ←OutputStreamSerializer.javat serializesq ~ ♀ ^t &com.ib
- &t /org.apache.wink.server.handlers.AbstractHandlert ¶AbstractHandler.javat ♫handleResponsesq ~ ♀ →t 5org.apache.
- sq ~ ♀ Ct 5org.apache.wink.server.handlers.AbstractHandlersChaint →AbstractHandlersChain.javat doChainsq ~ ♀ 't
- ♠handlesq ~ ♀ ▬t 5org.apache.wink.server.handlers.ResponseHandlersChaint →ResponseHandlersChain.javat ♠handlesq ~
- ♫handleResponsesq ~ ♀ →t 5org.apache.wink.server.handlers.ResponseHandlersChaint →ResponseHandlersChain.javat ♠ha
- tHandlersChain.javat doChainsq ~ ♀ Zt -org.apache.wink.server.internal.log.Responsest ♫Responses.javat ♫handleResp
- eHandlersChain.javat ♠handlesq ~ ♀ Ct 5org.apache.wink.server.handlers.AbstractHandlersChaint →AbstractHandlersCha
- handleRequestsq ~ ♀ |t 3org.apache.wink.server.internal.servlet.RestServlett ►RestServlet.javat servicesq ~ ♀ ☻£t
- handleRequestsq ~ ♀ ├t -com.ibm.ws.webcontainer.channel.WCChannelLinkt ↕WCChannelLink.javat ♣readysq ~ ♀ ☺─t 4com
- ►handleNewRequestsq ~ ♀ ☺1t 4com.ibm.ws.http.channel.inbound.impl.HttpInboundLinkt ¶HttpInboundLink.javat ♫process
- nnectionInitialReadCallback.javat ¶sendToDiscriminatorssq ~ ♀ qt <com.ibm.ws.tcp.channel.impl.NewConnectionInitial
- ┘t $com.ibm.io.async.AbstractAsyncFuturet ↑AbstractAsyncFuture.javat ♫invokeCallbacksq ~ ♀ ít #com.ibm.io.async.
- t ↕ResultHandler.javatcompletesq ~ ♀ ♥t ▲com.ibm.io.async.ResultHandlert ↕ResultHandler.javat ▬runEventProcessingLo
- on: java.io.NotSerializableException: org.apache.juneau.samples.jaxrs.HelloWorldResource$Message</ja>
- </p>
- <p>
- The following shows the PUT method being invoked.
- In this case, we're passing in the new bean as a JSON object.
- Also notice how the response is in standard condensed JSON since we did not override any properties on the REST method.
- </p>
- <p class='bcode'>
- C:\>curl.exe -H "Content-Type: text/json" -H "Accept: text/json" -d "{text:'Hello again',author:'Jane Doe'}"
- -X PUT http://localhost:9080/sample/wink/helloworld
- <ja>{"text":"Hello again","author":"Jane Doe"}</ja>
</p>
</div></div>
</div>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/jaxrs/rdf/package-summary.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/jaxrs/rdf/package-summary.html b/content/site/apidocs/org/apache/juneau/rest/jaxrs/rdf/package-summary.html
index 6248aef..29a9eea 100644
--- a/content/site/apidocs/org/apache/juneau/rest/jaxrs/rdf/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/rest/jaxrs/rdf/package-summary.html
@@ -71,7 +71,7 @@
<div class="header">
<h1 title="Package" class="title">Package org.apache.juneau.rest.jaxrs.rdf</h1>
<div class="docSummary">
-<div class="block">JAX-RS / Wink integration components with RDF support</div>
+<div class="block">JAX-RS integration components with RDF support</div>
</div>
<p>See: <a href="#package.description">Description</a></p>
</div>
@@ -99,7 +99,7 @@
<!-- -->
</a>
<h2 title="Package org.apache.juneau.rest.jaxrs.rdf Description">Package org.apache.juneau.rest.jaxrs.rdf Description</h2>
-<div class="block"><p>JAX-RS / Wink integration components with RDF support</p></div>
+<div class="block"><p>JAX-RS integration components with RDF support</p></div>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/jena/RestServletJenaDefault.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/jena/RestServletJenaDefault.html b/content/site/apidocs/org/apache/juneau/rest/jena/RestServletJenaDefault.html
index 718cc35..0dcc194 100644
--- a/content/site/apidocs/org/apache/juneau/rest/jena/RestServletJenaDefault.html
+++ b/content/site/apidocs/org/apache/juneau/rest/jena/RestServletJenaDefault.html
@@ -367,7 +367,7 @@ extends <a href="../../../../../org/apache/juneau/rest/RestServlet.html" title="
<!-- -->
</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.RestConfig-">init</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#l
og-java.util.logging.Level-java.lang.String-java.lang.Object...-">log</a>, <a href="../../../../../org/apache/juneau/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#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/jena/RestServletJenaGroupDefault.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/jena/RestServletJenaGroupDefault.html b/content/site/apidocs/org/apache/juneau/rest/jena/RestServletJenaGroupDefault.html
index 7d345e4..62f173e 100644
--- a/content/site/apidocs/org/apache/juneau/rest/jena/RestServletJenaGroupDefault.html
+++ b/content/site/apidocs/org/apache/juneau/rest/jena/RestServletJenaGroupDefault.html
@@ -205,7 +205,7 @@ extends <a href="../../../../../org/apache/juneau/rest/jena/RestServletJenaDefau
<!-- -->
</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.RestConfig-">init</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#l
og-java.util.logging.Level-java.lang.String-java.lang.Object...-">log</a>, <a href="../../../../../org/apache/juneau/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#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/jena/package-tree.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/jena/package-tree.html b/content/site/apidocs/org/apache/juneau/rest/jena/package-tree.html
index 50dd2c3..32d7338 100644
--- a/content/site/apidocs/org/apache/juneau/rest/jena/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/rest/jena/package-tree.html
@@ -82,7 +82,7 @@
<ul>
<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> (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>)
+<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>
<ul>
<li type="circle">org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServlet</span></a>
<ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 b2d6d5b..8a3e5ff 100644
--- a/content/site/apidocs/org/apache/juneau/rest/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/rest/package-summary.html
@@ -2792,28 +2792,9 @@
<h3 class='topic' onclick='toggle(this)'>4.16 - Listener Methods</h3>
<div class='topic'>
<p>
- Various convenience listener methods are provided on the <a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest"><code>RestCallHandler</code></a>
- class that subclasses can use to intercept requests:
+ Various convenience listener methods can be implemented by using the <a href="../../../../org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><code>@RestHook</code></a>
+ annotation on methods in your resource class.
</p>
- <ul class='doctree'>
- <li class='jac'>
- <a href="../../../../org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest"><code>RestCallHandler</code></a>
- <ul>
- <li class='jm'>
- <a href="../../../../org/apache/juneau/rest/RestCallHandler.html#onPreCall-org.apache.juneau.rest.RestRequest-"><code>onPreCall(RestRequest)</code></a>
- <br>Callback method that gets invoked right before the REST Java method is invoked.
- <li class='jm'>
- <a href="../../../../org/apache/juneau/rest/RestCallHandler.html#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-"><code>onPostCall(RestRequest,RestResponse)</code></a>
- <br>Callback method that gets invoked right after the REST Java method is invoked, but before the serializer is invoked.
- <li class='jm'>
- <a href="../../../../org/apache/juneau/rest/RestCallHandler.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-"><code>onSuccess(RestRequest,RestResponse,long)</code></a>
- <br>Callback method for listening for successful completion of requests.
- <li class='jm'>
- <a href="../../../../org/apache/juneau/rest/RestLogger.html#onError-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-org.apache.juneau.rest.RestException-"><code>onError(HttpServletRequest,HttpServletResponse,RestException)</code></a>
- <br>Callback method for logging errors during HTTP requests.
- </ul>
- </li>
- </ul>
</div>
<!-- ======================================================================================================== -->
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/package-tree.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/package-tree.html b/content/site/apidocs/org/apache/juneau/rest/package-tree.html
index 6a46418..688b393 100644
--- a/content/site/apidocs/org/apache/juneau/rest/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/rest/package-tree.html
@@ -107,7 +107,7 @@
</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> (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>)
+<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>
<ul>
<li type="circle">org.apache.juneau.rest.<a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServlet</span></a>
<ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/remoteable/RemoteableServlet.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/remoteable/RemoteableServlet.html b/content/site/apidocs/org/apache/juneau/rest/remoteable/RemoteableServlet.html
index 4ef89b3..06093c0 100644
--- a/content/site/apidocs/org/apache/juneau/rest/remoteable/RemoteableServlet.html
+++ b/content/site/apidocs/org/apache/juneau/rest/remoteable/RemoteableServlet.html
@@ -222,7 +222,7 @@ extends <a href="../../../../../org/apache/juneau/rest/RestServletDefault.html"
<!-- -->
</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.RestConfig-">init</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#l
og-java.util.logging.Level-java.lang.String-java.lang.Object...-">log</a>, <a href="../../../../../org/apache/juneau/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#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/remoteable/package-tree.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/remoteable/package-tree.html b/content/site/apidocs/org/apache/juneau/rest/remoteable/package-tree.html
index 7a7fa89..00e136c 100644
--- a/content/site/apidocs/org/apache/juneau/rest/remoteable/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/rest/remoteable/package-tree.html
@@ -82,7 +82,7 @@
<ul>
<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> (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>)
+<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>
<ul>
<li type="circle">org.apache.juneau.rest.<a href="../../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServlet</span></a>
<ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/overview-summary.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/overview-summary.html b/content/site/apidocs/overview-summary.html
index c6f4dfa..ede4aba 100644
--- a/content/site/apidocs/overview-summary.html
+++ b/content/site/apidocs/overview-summary.html
@@ -268,13 +268,13 @@
<tr class="altColor">
<td class="colFirst"><a href="org/apache/juneau/rest/jaxrs/package-summary.html">org.apache.juneau.rest.jaxrs</a></td>
<td class="colLast">
-<div class="block">JAX-RS / Wink integration components</div>
+<div class="block">JAX-RS integration components</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/apache/juneau/rest/jaxrs/rdf/package-summary.html">org.apache.juneau.rest.jaxrs.rdf</a></td>
<td class="colLast">
-<div class="block">JAX-RS / Wink integration components with RDF support</div>
+<div class="block">JAX-RS integration components with RDF support</div>
</td>
</tr>
<tr class="altColor">
@@ -4563,9 +4563,9 @@
<h6 class='figure'>Hypothetical RequestEchoResource.createSerializers() method</h6>
<p class='bcode'>
- <jd>/** Override the default rest serializers to add some transforms */</jd>
- <ja>@Override</ja>
- <jk>public synchronize void</jk> init(RestConfig config) throws Exception {
+ <jd>/** Override the default rest serializers to add some transforms through an INIT hook*/</jd>
+ <ja>@RestHook</ja>(<jsf>INIT</jsf>)
+ <jk>public void</jk> init(RestConfig config) throws Exception {
<jc>// Add bean filters for the HttpServletRequest, HttpSession, and ServletContext objects
// so that you don't show vendor-specific properties on subclasses.
// Add Enumeration POJO swap to be able to render the contents of Enumeration properties.
@@ -4577,9 +4577,6 @@
.setProperty(<jsf>SERIALIZER_maxDepth</jsf>, 10)
.setProperty(<jsf>SERIALIZER_detectRecursions</jsf>, <jk>true</jk>)
.setPageLinks(<js>"{...}"</js>);
-
- <jc>// Don't forget to call this!</jc>
- <jk>super</jk>.init(config);
}
</p>
<p>
@@ -7278,11 +7275,33 @@
<li>
New <a href="org/apache/juneau/utils/CalendarUtils.html" title="class in org.apache.juneau.utils"><code>CalendarUtils</code></a> class that encapsulates serialization/parsing logic from <a href="org/apache/juneau/transforms/CalendarSwap.html" title="class in org.apache.juneau.transforms"><code>CalendarSwap</code></a> and
<a href="org/apache/juneau/transforms/DateSwap.html" title="class in org.apache.juneau.transforms"><code>DateSwap</code></a>.
+ <li>
+ New annotation <a href="org/apache/juneau/html/annotation/Html.html#anchorText--"><code>Html.anchorText()</code></a>.
</ul>
<h6 class='topic'>org.apache.juneau.rest</h6>
<ul class='spaced-list'>
<li>
+ Revamped and simplified servlet and REST-call lifecycle handling through new
+ <a href="org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><code>@RestHook</code></a> annotation.
+ <ul>
+ <li>The <a href="org/apache/juneau/rest/RestServlet.html#init-javax.servlet.ServletConfig-"><code>RestServlet.init(ServletConfig)</code></a> method is now final and can
+ no longer be extended.
+ <br>Instead, use <a href="org/apache/juneau/rest/annotation/HookEvent.html#INIT"><code>HookEvent.INIT</code></a> or
+ <a href="org/apache/juneau/rest/annotation/HookEvent.html#POST_INIT"><code>HookEvent.POST_INIT</code></a> for initialization.
+ <li>The following methods on <a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> have been removed:
+ <ul>
+ <li><code>init(RestConfig)</code>
+ - Use <a href="org/apache/juneau/rest/annotation/HookEvent.html#INIT"><code>HookEvent.INIT</code></a> instead.
+ <li><code>onSuccess(RestRequest, RestResponse, long)</code>
+ - Use <a href="org/apache/juneau/rest/annotation/HookEvent.html#END_CALL"><code>HookEvent.END_CALL</code></a> instead.
+ <li><code>onPreCall(RestRequest)</code>
+ - Use <a href="org/apache/juneau/rest/annotation/HookEvent.html#PRE_CALL"><code>HookEvent.PRE_CALL</code></a> instead.
+ <li><code>onPostCall(RestRequest, RestResponse)</code>
+ - Use <a href="org/apache/juneau/rest/annotation/HookEvent.html#POST_CALL"><code>HookEvent.POST_CALL</code></a> instead.
+ </ul>
+ </ul>
+ <li>
Simplified <a href="org/apache/juneau/rest/widget/MenuItemWidget.html" title="class in org.apache.juneau.rest.widget"><code>MenuItemWidget</code></a>.
<br>Exposes an abstract method <a href="org/apache/juneau/rest/widget/MenuItemWidget.html#getContent-org.apache.juneau.rest.RestRequest-"><code>MenuItemWidget.getContent(RestRequest)</code></a> that
can return raw HTML via readers or char-sequences, or any other object (such as HTML5 beans) that will
@@ -7310,6 +7329,11 @@
</ul>
<li>
New tooltip template: <a href="org/apache/juneau/rest/widget/Tooltip.html" title="class in org.apache.juneau.rest.widget"><code>Tooltip</code></a>
+ <li>
+ New dark theme:
+ <br><img src='doc-files/ReleaseNotes_632_DarkStyle.png'>
+ <li>
+ Stylesheet selection now stored in HTTP session when passed in via <code>?stylesheet</code> query parameter.
</ul>
<h6 class='topic'>org.apache.juneau.rest.microservice</h6>
@@ -7320,7 +7344,6 @@
<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#getServletContextHandler--"><code>getServletContextHandler()</code></a>
</ul>
</ul>
@@ -8075,7 +8098,7 @@
The <a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> class now has the following initialization method that allows you to override
the config settings define via annotations:
<ul>
- <li><a href="org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-"><code>RestServlet.init(RestConfig)</code></a> - A modifiable configuration of a resource.
+ <li><code><del>RestServlet.init(RestConfig)</del></code> - A modifiable configuration of a resource.
</ul>
Non-<code>RestServlet</code> classes must have one of the following to allow it to be instantiated:
<ul>
@@ -8086,8 +8109,8 @@
<br>
Non-<code>RestServlet</code> classes can optionally include the following init methods to gain access to the config and context:
<ul>
- <li><code><jk>public</jk> init(RestConfig)</code>
- <li><code><jk>public</jk> init(RestContext)</code>
+ <li><code><del><jk>public</jk> init(RestConfig)</del></code>
+ <li><code><del><jk>public</jk> init(RestContext)</del></code>
</ul>
<li>New annotations added to <a href="org/apache/juneau/rest/annotation/RestResource.html" title="annotation in org.apache.juneau.rest.annotation"><code>@RestResource</code></a> to allow non-<code>RestServlet</code>
resources to do the same as subclassing directly from <code>RestServlet</code>:
@@ -9776,7 +9799,7 @@
methods that only look for parameters in the URL query string to prevent loading and parsing of URL-Encoded form posts.
<li>New <del><code>@QParam</code></del> and <del><code>@HasQParam</code></del> annotations for accessing query parameters from the URL query string.
<li><code>&plainText</code> parameter can now specify a false value.
- <li>Removed properties parameters from <a href="org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-"><code>RestServlet.onPreCall(RestRequest)</code></a> and <a href="org/apache/juneau/rest/RestServlet.html#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-"><code>RestServlet.onPostCall(RestRequest,RestResponse)</code></a> methods
+ <li>Removed properties parameters from <code><del>RestServlet.onPreCall(RestRequest)</del></code> and <code><del>RestServlet#onPostCall(RestRequest,RestResponse)</del></code> methods
since the properties are already accessible through <code>RestRequest.getProperties()</code>.
<li>Added <a href="org/apache/juneau/uon/UonSerializer.html" title="class in org.apache.juneau.uon"><code>UonSerializer</code></a> and <a href="org/apache/juneau/uon/UonParser.html" title="class in org.apache.juneau.uon"><code>UonParser</code></a> to serializer and parser lists on
<a href="org/apache/juneau/rest/RestServletDefault.html" title="class in org.apache.juneau.rest"><code>RestServletDefault</code></a> and <a href="org/apache/juneau/rest/jena/RestServletJenaDefault.html" title="class in org.apache.juneau.rest.jena"><code>RestServletJenaDefault</code></a>.
@@ -10741,8 +10764,8 @@
<li>
New methods on <a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a>:
<ul>
- <li><a href="org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-"><code>RestServlet.onPreCall(RestRequest)</code></a></li>
- <li><a href="org/apache/juneau/rest/RestServlet.html#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-"><code>RestServlet.onPostCall(RestRequest,RestResponse)</code></a></li>
+ <li><code><del>RestServlet.onPreCall(RestRequest)</del></code></li>
+ <li><code><del>RestServlet.onPostCall(RestRequest,RestResponse)</del></code></li>
</ul>
</li>
<li>
@@ -10817,7 +10840,7 @@
</p>
<ul class='spaced-list'>
<li>
- Juno-Wink integration components that have been requested my many for a long time!<br>
+ Juno-Wink integration components that have been requested by many for a long time!<br>
Refer to <a class='doclink' href='org/apache/juneau/rest/jaxrs/package-summary.html#TOC'>org.apache.juneau.rest.jaxrs</a> for information.
</li>
<li>
@@ -11063,7 +11086,7 @@
<li>New <js>"?noTrace"</js> URL parameter to prevent stack traces from being logged (for JUnit testing of error conditions).</li>
<li>New <code>RestServletProperties.REST_useStackTraceHashes</code> property to prevent the same stack trace from being logged multiple times.</li>
<li>New <code>RestServletProperties.REST_renderResponseStackTraces</code> property for preventing stack traces in responses for security reasons.</li>
- <li>New overridable <code>RestServlet.onError(HttpServletRequest,HttpServletResponse,RestException,boolean)</code> and <a href="org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-"><code>RestServlet.onSuccess(RestRequest,RestResponse,long)</code></a> methods for plugging in your own logging and peformance monitoring.</li>
+ <li>New overridable <code>RestServlet.onError(HttpServletRequest,HttpServletResponse,RestException,boolean)</code> and <code><del>RestServlet.onSuccess(RestRequest,RestResponse,long)</del></code> methods for plugging in your own logging and peformance monitoring.</li>
<li>Eliminated <code>RestServlet.getInitParams()</code> method, since it's now redundant with <a href="org/apache/juneau/rest/RestServlet.html#getProperties--"><code>RestServlet.getProperties()</code></a>.</li>
<li>Header parameters passed as URL parameters are now case-insensitive.</li>
</ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/overview-tree.html b/content/site/apidocs/overview-tree.html
index 84fcbac..2e8b9f8 100644
--- a/content/site/apidocs/overview-tree.html
+++ b/content/site/apidocs/overview-tree.html
@@ -604,7 +604,7 @@
</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> (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>)
+<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>
<ul>
<li type="circle">org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServlet</span></a>
<ul>
@@ -1456,6 +1456,7 @@
<li type="circle">org.apache.juneau.jena.annotation.<a href="org/apache/juneau/jena/annotation/Rdf.html" title="annotation in org.apache.juneau.jena.annotation"><span class="typeNameLink">Rdf</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
<li type="circle">org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/RestResource.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">RestResource</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
<li type="circle">org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/RestMethod.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">RestMethod</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
+<li type="circle">org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">RestHook</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
<li type="circle">org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/Response.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Response</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
<li type="circle">org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/ResourceSwagger.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">ResourceSwagger</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
<li type="circle">org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/Query.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Query</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
@@ -1494,6 +1495,7 @@
<li type="circle">org.apache.juneau.xml.annotation.<a href="org/apache/juneau/xml/annotation/XmlFormat.html" title="enum in org.apache.juneau.xml.annotation"><span class="typeNameLink">XmlFormat</span></a></li>
<li type="circle">org.apache.juneau.jena.<a href="org/apache/juneau/jena/RdfCollectionFormat.html" title="enum in org.apache.juneau.jena"><span class="typeNameLink">RdfCollectionFormat</span></a></li>
<li type="circle">org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/Inherit.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">Inherit</span></a></li>
+<li type="circle">org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">HookEvent</span></a></li>
<li type="circle">org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestParamType.html" title="enum in org.apache.juneau.rest"><span class="typeNameLink">RestParamType</span></a></li>
<li type="circle">org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/SSLOpts.CertValidate.html" title="enum in org.apache.juneau.rest.client"><span class="typeNameLink">SSLOpts.CertValidate</span></a></li>
<li type="circle">org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/SSLOpts.HostVerify.html" title="enum in org.apache.juneau.rest.client"><span class="typeNameLink">SSLOpts.HostVerify</span></a></li>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html b/content/site/apidocs/src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html
index 3315ef7..c453321 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html
@@ -33,7 +33,7 @@
<span class="sourceLineNo">025</span><a name="line.25"></a>
<span class="sourceLineNo">026</span> private final boolean asXml, noTables, noTableHeaders, asPlainText;<a name="line.26"></a>
<span class="sourceLineNo">027</span> private final HtmlRender render;<a name="line.27"></a>
-<span class="sourceLineNo">028</span> private final String link;<a name="line.28"></a>
+<span class="sourceLineNo">028</span> private final String link, anchorText;<a name="line.28"></a>
<span class="sourceLineNo">029</span><a name="line.29"></a>
<span class="sourceLineNo">030</span> /**<a name="line.30"></a>
<span class="sourceLineNo">031</span> * Constructor.<a name="line.31"></a>
@@ -57,97 +57,112 @@
<span class="sourceLineNo">049</span> this.asPlainText = b.asPlainText;<a name="line.49"></a>
<span class="sourceLineNo">050</span> this.render = ClassUtils.newInstance(HtmlRender.class, b.render);<a name="line.50"></a>
<span class="sourceLineNo">051</span> this.link = b.link;<a name="line.51"></a>
-<span class="sourceLineNo">052</span> }<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span> private static class Builder {<a name="line.54"></a>
-<span class="sourceLineNo">055</span> boolean asXml, noTables, noTableHeaders, asPlainText;<a name="line.55"></a>
-<span class="sourceLineNo">056</span> Class<? extends HtmlRender> render = HtmlRender.class;<a name="line.56"></a>
-<span class="sourceLineNo">057</span> String link;<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span> void findHtmlInfo(Html html) {<a name="line.59"></a>
-<span class="sourceLineNo">060</span> if (html == null)<a name="line.60"></a>
-<span class="sourceLineNo">061</span> return;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> if (html.asXml())<a name="line.62"></a>
-<span class="sourceLineNo">063</span> asXml = html.asXml();<a name="line.63"></a>
-<span class="sourceLineNo">064</span> if (html.noTables())<a name="line.64"></a>
-<span class="sourceLineNo">065</span> noTables = html.noTables();<a name="line.65"></a>
-<span class="sourceLineNo">066</span> if (html.noTableHeaders())<a name="line.66"></a>
-<span class="sourceLineNo">067</span> noTableHeaders = html.noTableHeaders();<a name="line.67"></a>
-<span class="sourceLineNo">068</span> if (html.asPlainText())<a name="line.68"></a>
-<span class="sourceLineNo">069</span> asPlainText = html.asPlainText();<a name="line.69"></a>
-<span class="sourceLineNo">070</span> if (html.render() != HtmlRender.class)<a name="line.70"></a>
-<span class="sourceLineNo">071</span> render = html.render();<a name="line.71"></a>
-<span class="sourceLineNo">072</span> if (! html.link().isEmpty())<a name="line.72"></a>
-<span class="sourceLineNo">073</span> link = html.link();<a name="line.73"></a>
-<span class="sourceLineNo">074</span> }<a name="line.74"></a>
-<span class="sourceLineNo">075</span> }<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span> /**<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * Returns whether this bean property should be serialized as XML instead of HTML.<a name="line.78"></a>
-<span class="sourceLineNo">079</span> *<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * @return <jk>true</jk> if the the {@link Html} annotation is specified, and {@link Html#asXml()} is <jk>true</jk>.<a name="line.80"></a>
-<span class="sourceLineNo">081</span> */<a name="line.81"></a>
-<span class="sourceLineNo">082</span> protected boolean isAsXml() {<a name="line.82"></a>
-<span class="sourceLineNo">083</span> return asXml;<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> /**<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * Returns whether this bean property should be serialized as plain text instead of HTML.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> *<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * @return<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * <jk>true</jk> if the the {@link Html} annotation is specified, and {@link Html#asPlainText()} is<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * <jk>true</jk>.<a name="line.91"></a>
-<span class="sourceLineNo">092</span> */<a name="line.92"></a>
-<span class="sourceLineNo">093</span> protected boolean isAsPlainText() {<a name="line.93"></a>
-<span class="sourceLineNo">094</span> return asPlainText;<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 whether this bean property should not be serialized as an HTML table.<a name="line.98"></a>
-<span class="sourceLineNo">099</span> *<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * @return<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * <jk>true</jk> if the the {@link Html} annotation is specified, and {@link Html#noTables()} is<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * <jk>true</jk>.<a name="line.102"></a>
-<span class="sourceLineNo">103</span> */<a name="line.103"></a>
-<span class="sourceLineNo">104</span> protected boolean isNoTables() {<a name="line.104"></a>
-<span class="sourceLineNo">105</span> return noTables;<a name="line.105"></a>
-<span class="sourceLineNo">106</span> }<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span> /**<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * Returns whether this bean property should not include table headers when serialized as an HTML table.<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * @return<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * <jk>true</jk> if the the {@link Html} annotation is specified, and {@link Html#noTableHeaders()} is<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * <jk>true</jk>.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> */<a name="line.114"></a>
-<span class="sourceLineNo">115</span> public boolean isNoTableHeaders() {<a name="line.115"></a>
-<span class="sourceLineNo">116</span> return noTableHeaders;<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> * Returns the render class for rendering the style and contents of this property value in HTML.<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *<a name="line.121"></a>
-<span class="sourceLineNo">122</span> * <p><a name="line.122"></a>
-<span class="sourceLineNo">123</span> * This value is specified via the {@link Html#render()} annotation.<a name="line.123"></a>
+<span class="sourceLineNo">052</span> this.anchorText = b.anchorText;<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> private static class Builder {<a name="line.55"></a>
+<span class="sourceLineNo">056</span> boolean asXml, noTables, noTableHeaders, asPlainText;<a name="line.56"></a>
+<span class="sourceLineNo">057</span> Class<? extends HtmlRender> render = HtmlRender.class;<a name="line.57"></a>
+<span class="sourceLineNo">058</span> String link, anchorText;<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span> void findHtmlInfo(Html html) {<a name="line.60"></a>
+<span class="sourceLineNo">061</span> if (html == null)<a name="line.61"></a>
+<span class="sourceLineNo">062</span> return;<a name="line.62"></a>
+<span class="sourceLineNo">063</span> if (html.asXml())<a name="line.63"></a>
+<span class="sourceLineNo">064</span> asXml = html.asXml();<a name="line.64"></a>
+<span class="sourceLineNo">065</span> if (html.noTables())<a name="line.65"></a>
+<span class="sourceLineNo">066</span> noTables = html.noTables();<a name="line.66"></a>
+<span class="sourceLineNo">067</span> if (html.noTableHeaders())<a name="line.67"></a>
+<span class="sourceLineNo">068</span> noTableHeaders = html.noTableHeaders();<a name="line.68"></a>
+<span class="sourceLineNo">069</span> if (html.asPlainText())<a name="line.69"></a>
+<span class="sourceLineNo">070</span> asPlainText = html.asPlainText();<a name="line.70"></a>
+<span class="sourceLineNo">071</span> if (html.render() != HtmlRender.class)<a name="line.71"></a>
+<span class="sourceLineNo">072</span> render = html.render();<a name="line.72"></a>
+<span class="sourceLineNo">073</span> if (! html.link().isEmpty())<a name="line.73"></a>
+<span class="sourceLineNo">074</span> link = html.link();<a name="line.74"></a>
+<span class="sourceLineNo">075</span> if (! html.anchorText().isEmpty())<a name="line.75"></a>
+<span class="sourceLineNo">076</span> anchorText = html.anchorText();<a name="line.76"></a>
+<span class="sourceLineNo">077</span> }<a name="line.77"></a>
+<span class="sourceLineNo">078</span> }<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span> /**<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * Returns whether this bean property should be serialized as XML instead of HTML.<a name="line.81"></a>
+<span class="sourceLineNo">082</span> *<a name="line.82"></a>
+<span class="sourceLineNo">083</span> * @return <jk>true</jk> if the the {@link Html} annotation is specified, and {@link Html#asXml()} is <jk>true</jk>.<a name="line.83"></a>
+<span class="sourceLineNo">084</span> */<a name="line.84"></a>
+<span class="sourceLineNo">085</span> protected boolean isAsXml() {<a name="line.85"></a>
+<span class="sourceLineNo">086</span> return asXml;<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> * Returns whether this bean property should be serialized as plain text instead of HTML.<a name="line.90"></a>
+<span class="sourceLineNo">091</span> *<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * @return<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * <jk>true</jk> if the the {@link Html} annotation is specified, and {@link Html#asPlainText()} is<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * <jk>true</jk>.<a name="line.94"></a>
+<span class="sourceLineNo">095</span> */<a name="line.95"></a>
+<span class="sourceLineNo">096</span> protected boolean isAsPlainText() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span> return asPlainText;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> }<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span> /**<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * Returns whether this bean property should not be serialized as an HTML table.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> *<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * @return<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * <jk>true</jk> if the the {@link Html} annotation is specified, and {@link Html#noTables()} is<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * <jk>true</jk>.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> */<a name="line.106"></a>
+<span class="sourceLineNo">107</span> protected boolean isNoTables() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span> return noTables;<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> /**<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * Returns whether this bean property should not include table headers when serialized as an HTML table.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * @return<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * <jk>true</jk> if the the {@link Html} annotation is specified, and {@link Html#noTableHeaders()} is<a name="line.115"></a>
+<span class="sourceLineNo">116</span> * <jk>true</jk>.<a name="line.116"></a>
+<span class="sourceLineNo">117</span> */<a name="line.117"></a>
+<span class="sourceLineNo">118</span> public boolean isNoTableHeaders() {<a name="line.118"></a>
+<span class="sourceLineNo">119</span> return noTableHeaders;<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> /**<a name="line.122"></a>
+<span class="sourceLineNo">123</span> * Returns the render class for rendering the style and contents of this property value in HTML.<a name="line.123"></a>
<span class="sourceLineNo">124</span> *<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * @return The render class, never <jk>null</jk>.<a name="line.125"></a>
-<span class="sourceLineNo">126</span> */<a name="line.126"></a>
-<span class="sourceLineNo">127</span> public HtmlRender getRender() {<a name="line.127"></a>
-<span class="sourceLineNo">128</span> return render;<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> * Adds a hyperlink to this value in HTML.<a name="line.132"></a>
-<span class="sourceLineNo">133</span> *<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * <p><a name="line.134"></a>
-<span class="sourceLineNo">135</span> * This value is specified via the {@link Html#link()} annotation.<a name="line.135"></a>
+<span class="sourceLineNo">125</span> * <p><a name="line.125"></a>
+<span class="sourceLineNo">126</span> * This value is specified via the {@link Html#render()} annotation.<a name="line.126"></a>
+<span class="sourceLineNo">127</span> *<a name="line.127"></a>
+<span class="sourceLineNo">128</span> * @return The render class, never <jk>null</jk>.<a name="line.128"></a>
+<span class="sourceLineNo">129</span> */<a name="line.129"></a>
+<span class="sourceLineNo">130</span> public HtmlRender getRender() {<a name="line.130"></a>
+<span class="sourceLineNo">131</span> return render;<a name="line.131"></a>
+<span class="sourceLineNo">132</span> }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span> /**<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * Adds a hyperlink to this value in HTML.<a name="line.135"></a>
<span class="sourceLineNo">136</span> *<a name="line.136"></a>
-<span class="sourceLineNo">137</span> * @return The link string, or <jk>null</jk> if not specified.<a name="line.137"></a>
-<span class="sourceLineNo">138</span> */<a name="line.138"></a>
-<span class="sourceLineNo">139</span> public String getLink() {<a name="line.139"></a>
-<span class="sourceLineNo">140</span> return link;<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">137</span> * <p><a name="line.137"></a>
+<span class="sourceLineNo">138</span> * This value is specified via the {@link Html#link()} annotation.<a name="line.138"></a>
+<span class="sourceLineNo">139</span> *<a name="line.139"></a>
+<span class="sourceLineNo">140</span> * @return The link string, or <jk>null</jk> if not specified.<a name="line.140"></a>
+<span class="sourceLineNo">141</span> */<a name="line.141"></a>
+<span class="sourceLineNo">142</span> public String getLink() {<a name="line.142"></a>
+<span class="sourceLineNo">143</span> return link;<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> /**<a name="line.146"></a>
+<span class="sourceLineNo">147</span> * Specifies the anchor text for this property.<a name="line.147"></a>
+<span class="sourceLineNo">148</span> *<a name="line.148"></a>
+<span class="sourceLineNo">149</span> * <p><a name="line.149"></a>
+<span class="sourceLineNo">150</span> * This value is specified via the {@link Html#anchorText()} annotation.<a name="line.150"></a>
+<span class="sourceLineNo">151</span> *<a name="line.151"></a>
+<span class="sourceLineNo">152</span> * @return The link string, or <jk>null</jk> if not specified.<a name="line.152"></a>
+<span class="sourceLineNo">153</span> */<a name="line.153"></a>
+<span class="sourceLineNo">154</span> public String getAnchorText() {<a name="line.154"></a>
+<span class="sourceLineNo">155</span> return anchorText;<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>
[06/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 6c565b5..1a4ddc5 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
@@ -26,1583 +26,1614 @@
<span class="sourceLineNo">018</span>import static org.apache.juneau.rest.RestUtils.*;<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.util.*;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import javax.activation.*;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import javax.servlet.*;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import javax.servlet.http.*;<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.encoders.*;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.juneau.encoders.Encoder;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.juneau.html.*;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.juneau.http.*;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.juneau.ini.*;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.juneau.internal.*;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.juneau.parser.*;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.juneau.rest.annotation.*;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.juneau.rest.response.*;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.juneau.rest.vars.*;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.juneau.rest.widget.*;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.juneau.serializer.*;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.juneau.svl.*;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.juneau.svl.vars.*;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.juneau.utils.*;<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>
-<span class="sourceLineNo">045</span> * Defines the initial configuration of a <code>RestServlet</code> or <code>@RestResource</code> annotated object.<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> * An extension of the {@link ServletConfig} object used during servlet initialization.<a name="line.48"></a>
-<span class="sourceLineNo">049</span> *<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * <p><a name="line.50"></a>
-<span class="sourceLineNo">051</span> * Provides access to the following initialized resources:<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * <ul><a name="line.52"></a>
-<span class="sourceLineNo">053</span> * <li>{@link #getConfigFile()} - The external configuration file for this resource.<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * <li>{@link #getProperties()} - The modifiable configuration properties for this resource.<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * <li>{@link #getVarResolverBuilder()} - The variable resolver for this resource.<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> * Methods are provided for overriding or augmenting the information provided by the <ja>@RestResource</ja> annotation.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * In general, most information provided in the <ja>@RestResource</ja> annotation can be specified programmatically<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * through calls on this object.<a name="line.61"></a>
-<span class="sourceLineNo">062</span> *<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * <p><a name="line.63"></a>
-<span class="sourceLineNo">064</span> * To interact with this object, simply implement the following init method in your resource class:<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 synchronized void</jk> init(RestConfig config) <jk>throws</jk> Exception {<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * config.addPojoSwaps(CalendarSwap.<jsf>RFC2822DTZ</jsf>.<jk>class</jk>);<a name="line.67"></a>
-<span class="sourceLineNo">068</span> * config.setProperty(<jsf>PARSER_debug</jsf>, <jk>true</jk>);<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * <jk>super</jk>.init(config); <jc>// Make sure this is the last line! (or just leave it out entirely)</jc><a name="line.69"></a>
-<span class="sourceLineNo">070</span> * }<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * </p><a name="line.71"></a>
-<span class="sourceLineNo">072</span> *<a name="line.72"></a>
-<span class="sourceLineNo">073</span> * <p><a name="line.73"></a>
-<span class="sourceLineNo">074</span> * Note that this method is identical to {@link HttpServlet#init(ServletConfig)} except you get access to<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * this object instead. Also, this method can throw any exception, not just a {@link ServletException}.<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> * The parent <code>init(RestServletConfig)</code> method will construct a read-only {@link RestContext} object<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * that contains a snapshot of these settings. If you call <code><jk>super</jk>.init(RestServletConfig)</code> before<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * you modify this config object, you won't see the changes!<a name="line.80"></a>
-<span class="sourceLineNo">081</span> */<a name="line.81"></a>
-<span class="sourceLineNo">082</span>@SuppressWarnings({"hiding"})<a name="line.82"></a>
-<span class="sourceLineNo">083</span>public class RestConfig implements ServletConfig {<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span> final ServletConfig inner;<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> // The following fields are meant to be modifiable.<a name="line.88"></a>
-<span class="sourceLineNo">089</span> // They should not be declared final.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> // Read-only snapshots of these will be made in RestServletContext.<a name="line.90"></a>
-<span class="sourceLineNo">091</span> //---------------------------------------------------------------------------<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span> ObjectMap properties;<a name="line.93"></a>
-<span class="sourceLineNo">094</span> ConfigFile configFile;<a name="line.94"></a>
-<span class="sourceLineNo">095</span> VarResolverBuilder varResolverBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span> List<Class<?>><a name="line.97"></a>
-<span class="sourceLineNo">098</span> beanFilters = new ArrayList<Class<?>>(),<a name="line.98"></a>
-<span class="sourceLineNo">099</span> pojoSwaps = new ArrayList<Class<?>>(),<a name="line.99"></a>
-<span class="sourceLineNo">100</span> paramResolvers = new ArrayList<Class<?>>();<a name="line.100"></a>
-<span class="sourceLineNo">101</span> Class<? extends SerializerListener> serializerListener;<a name="line.101"></a>
-<span class="sourceLineNo">102</span> Class<? extends ParserListener> parserListener;<a name="line.102"></a>
-<span class="sourceLineNo">103</span> SerializerGroupBuilder serializers = new SerializerGroupBuilder();<a name="line.103"></a>
-<span class="sourceLineNo">104</span> ParserGroupBuilder parsers = new ParserGroupBuilder();<a name="line.104"></a>
-<span class="sourceLineNo">105</span> EncoderGroupBuilder encoders = new EncoderGroupBuilder().append(IdentityEncoder.INSTANCE);<a name="line.105"></a>
-<span class="sourceLineNo">106</span> List<Object> converters = new ArrayList<Object>();<a name="line.106"></a>
-<span class="sourceLineNo">107</span> List<Object> guards = new ArrayList<Object>();<a name="line.107"></a>
-<span class="sourceLineNo">108</span> MimetypesFileTypeMap mimeTypes = new ExtendedMimetypesFileTypeMap();<a name="line.108"></a>
-<span class="sourceLineNo">109</span> Map<String,String> defaultRequestHeaders = new TreeMap<String,String>(String.CASE_INSENSITIVE_ORDER);<a name="line.109"></a>
-<span class="sourceLineNo">110</span> Map<String,Object> defaultResponseHeaders = new LinkedHashMap<String,Object>();<a name="line.110"></a>
-<span class="sourceLineNo">111</span> List<Object> responseHandlers = new ArrayList<Object>();<a name="line.111"></a>
-<span class="sourceLineNo">112</span> List<Object> childResources = new ArrayList<Object>();<a name="line.112"></a>
-<span class="sourceLineNo">113</span> List<MediaType> supportedContentTypes, supportedAcceptTypes;<a name="line.113"></a>
-<span class="sourceLineNo">114</span> Object favIcon;<a name="line.114"></a>
-<span class="sourceLineNo">115</span> List<Object> staticFiles;<a name="line.115"></a>
-<span class="sourceLineNo">116</span> RestContext parentContext;<a name="line.116"></a>
-<span class="sourceLineNo">117</span> String path, htmlHeader, htmlNav, htmlAside, htmlFooter, htmlStyle, htmlStylesheet, htmlScript, htmlNoResultsMessage;<a name="line.117"></a>
-<span class="sourceLineNo">118</span> String[] htmlLinks;<a name="line.118"></a>
-<span class="sourceLineNo">119</span> String clientVersionHeader = "X-Client-Version";<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span> Object resourceResolver = RestResourceResolverSimple.class;<a name="line.121"></a>
-<span class="sourceLineNo">122</span> Object logger = RestLogger.Normal.class;<a name="line.122"></a>
-<span class="sourceLineNo">123</span> Object callHandler = RestCallHandler.class;<a name="line.123"></a>
-<span class="sourceLineNo">124</span> Object infoProvider = RestInfoProvider.class;<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span> boolean htmlNoWrap;<a name="line.126"></a>
-<span class="sourceLineNo">127</span> Object htmlTemplate = HtmlDocTemplateBasic.class;<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span> Class<?> resourceClass;<a name="line.129"></a>
-<span class="sourceLineNo">130</span> List<Class<? extends Widget>> htmlWidgets = new ArrayList<Class<? extends Widget>>();<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 for top-level servlets when using dependency injection.<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> * Work-in-progress.<a name="line.136"></a>
-<span class="sourceLineNo">137</span> *<a name="line.137"></a>
-<span class="sourceLineNo">138</span> * @param config<a name="line.138"></a>
-<span class="sourceLineNo">139</span> * The servlet config object we're extending.<a name="line.139"></a>
-<span class="sourceLineNo">140</span> * @param resourceClass<a name="line.140"></a>
-<span class="sourceLineNo">141</span> * The class annotated with the {@link RestResource @RestResource} annotation.<a name="line.141"></a>
-<span class="sourceLineNo">142</span> * @throws ServletException<a name="line.142"></a>
-<span class="sourceLineNo">143</span> */<a name="line.143"></a>
-<span class="sourceLineNo">144</span> public RestConfig(ServletConfig config, Class<?> resourceClass) throws ServletException {<a name="line.144"></a>
-<span class="sourceLineNo">145</span> this(config, resourceClass, null);<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> * Constructor.<a name="line.149"></a>
-<span class="sourceLineNo">150</span> *<a name="line.150"></a>
-<span class="sourceLineNo">151</span> * @param config The servlet config passed into the servlet by the servlet container.<a name="line.151"></a>
-<span class="sourceLineNo">152</span> * @param resource The class annotated with <ja>@RestResource</ja>.<a name="line.152"></a>
-<span class="sourceLineNo">153</span> * @throws ServletException Something bad happened.<a name="line.153"></a>
-<span class="sourceLineNo">154</span> */<a name="line.154"></a>
-<span class="sourceLineNo">155</span> RestConfig(ServletConfig config, Class<?> resourceClass, RestContext parentContext) throws ServletException {<a name="line.155"></a>
-<span class="sourceLineNo">156</span> this.inner = config;<a name="line.156"></a>
-<span class="sourceLineNo">157</span> this.resourceClass = resourceClass;<a name="line.157"></a>
-<span class="sourceLineNo">158</span> this.parentContext = parentContext;<a name="line.158"></a>
-<span class="sourceLineNo">159</span> this.resourceResolver = parentContext == null ? RestResourceResolverSimple.class : parentContext.getResourceResolver();<a name="line.159"></a>
-<span class="sourceLineNo">160</span> try {<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span> ConfigFileBuilder cfb = new ConfigFileBuilder();<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span> properties = new ObjectMap();<a name="line.164"></a>
-<span class="sourceLineNo">165</span> configFile = cfb.build();<a name="line.165"></a>
-<span class="sourceLineNo">166</span> varResolverBuilder = new VarResolverBuilder()<a name="line.166"></a>
-<span class="sourceLineNo">167</span> .vars(<a name="line.167"></a>
-<span class="sourceLineNo">168</span> SystemPropertiesVar.class,<a name="line.168"></a>
-<span class="sourceLineNo">169</span> EnvVariablesVar.class,<a name="line.169"></a>
-<span class="sourceLineNo">170</span> ConfigFileVar.class,<a name="line.170"></a>
-<span class="sourceLineNo">171</span> IfVar.class,<a name="line.171"></a>
-<span class="sourceLineNo">172</span> SwitchVar.class<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> VarResolver vr = varResolverBuilder.build();<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span> Map<Class<?>,RestResource> restResourceAnnotationsParentFirst = findAnnotationsMapParentFirst(RestResource.class, resourceClass);<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span> // Find our config file. It's the last non-empty @RestResource.config().<a name="line.179"></a>
-<span class="sourceLineNo">180</span> String configPath = "";<a name="line.180"></a>
-<span class="sourceLineNo">181</span> for (RestResource r : restResourceAnnotationsParentFirst.values())<a name="line.181"></a>
-<span class="sourceLineNo">182</span> if (! r.config().isEmpty())<a name="line.182"></a>
-<span class="sourceLineNo">183</span> configPath = r.config();<a name="line.183"></a>
-<span class="sourceLineNo">184</span> String cf = vr.resolve(configPath);<a name="line.184"></a>
-<span class="sourceLineNo">185</span> if (! cf.isEmpty())<a name="line.185"></a>
-<span class="sourceLineNo">186</span> configFile = cfb.build(cf);<a name="line.186"></a>
-<span class="sourceLineNo">187</span> configFile = configFile.getResolving(vr);<a name="line.187"></a>
-<span class="sourceLineNo">188</span><a name="line.188"></a>
-<span class="sourceLineNo">189</span> // Add our config file to the variable resolver.<a name="line.189"></a>
-<span class="sourceLineNo">190</span> varResolverBuilder.contextObject(ConfigFileVar.SESSION_config, configFile);<a name="line.190"></a>
-<span class="sourceLineNo">191</span> vr = varResolverBuilder.build();<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span> // Add the servlet init parameters to our properties.<a name="line.193"></a>
-<span class="sourceLineNo">194</span> for (Enumeration<String> ep = config.getInitParameterNames(); ep.hasMoreElements();) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span> String p = ep.nextElement();<a name="line.195"></a>
-<span class="sourceLineNo">196</span> String initParam = config.getInitParameter(p);<a name="line.196"></a>
-<span class="sourceLineNo">197</span> properties.put(vr.resolve(p), vr.resolve(initParam));<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> // Load stuff from parent-to-child order.<a name="line.200"></a>
-<span class="sourceLineNo">201</span> // This allows child settings to overwrite parent settings.<a name="line.201"></a>
-<span class="sourceLineNo">202</span> for (Map.Entry<Class<?>,RestResource> e : restResourceAnnotationsParentFirst.entrySet()) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span> Class<?> c = e.getKey();<a name="line.203"></a>
-<span class="sourceLineNo">204</span> RestResource r = e.getValue();<a name="line.204"></a>
-<span class="sourceLineNo">205</span> for (Property p : r.properties())<a name="line.205"></a>
-<span class="sourceLineNo">206</span> properties.append(vr.resolve(p.name()), vr.resolve(p.value()));<a name="line.206"></a>
-<span class="sourceLineNo">207</span> for (String p : r.flags())<a name="line.207"></a>
-<span class="sourceLineNo">208</span> properties.append(p, true);<a name="line.208"></a>
-<span class="sourceLineNo">209</span> addSerializers(r.serializers());<a name="line.209"></a>
-<span class="sourceLineNo">210</span> addParsers(r.parsers());<a name="line.210"></a>
-<span class="sourceLineNo">211</span> addEncoders(r.encoders());<a name="line.211"></a>
-<span class="sourceLineNo">212</span> addDefaultRequestHeaders(r.defaultRequestHeaders());<a name="line.212"></a>
-<span class="sourceLineNo">213</span> addDefaultResponseHeaders(r.defaultResponseHeaders());<a name="line.213"></a>
-<span class="sourceLineNo">214</span> addResponseHandlers(r.responseHandlers());<a name="line.214"></a>
-<span class="sourceLineNo">215</span> addConverters(r.converters());<a name="line.215"></a>
-<span class="sourceLineNo">216</span> addGuards(reverse(r.guards()));<a name="line.216"></a>
-<span class="sourceLineNo">217</span> addChildResources(r.children());<a name="line.217"></a>
-<span class="sourceLineNo">218</span> addBeanFilters(r.beanFilters());<a name="line.218"></a>
-<span class="sourceLineNo">219</span> addPojoSwaps(r.pojoSwaps());<a name="line.219"></a>
-<span class="sourceLineNo">220</span> addParamResolvers(r.paramResolvers());<a name="line.220"></a>
-<span class="sourceLineNo">221</span> serializerListener(r.serializerListener());<a name="line.221"></a>
-<span class="sourceLineNo">222</span> parserListener(r.parserListener());<a name="line.222"></a>
-<span class="sourceLineNo">223</span> if (! r.favicon().isEmpty())<a name="line.223"></a>
-<span class="sourceLineNo">224</span> setFavIcon(c, r.favicon());<a name="line.224"></a>
-<span class="sourceLineNo">225</span> if (! r.staticFiles().isEmpty())<a name="line.225"></a>
-<span class="sourceLineNo">226</span> addStaticFiles(c, r.staticFiles());<a name="line.226"></a>
-<span class="sourceLineNo">227</span> if (! r.path().isEmpty())<a name="line.227"></a>
-<span class="sourceLineNo">228</span> setPath(r.path());<a name="line.228"></a>
-<span class="sourceLineNo">229</span> if (! r.clientVersionHeader().isEmpty())<a name="line.229"></a>
-<span class="sourceLineNo">230</span> setClientVersionHeader(r.clientVersionHeader());<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span> if (r.resourceResolver() != RestResourceResolver.class)<a name="line.232"></a>
-<span class="sourceLineNo">233</span> setResourceResolver(r.resourceResolver());<a name="line.233"></a>
-<span class="sourceLineNo">234</span> if (r.logger() != RestLogger.Normal.class)<a name="line.234"></a>
-<span class="sourceLineNo">235</span> setLogger(r.logger());<a name="line.235"></a>
-<span class="sourceLineNo">236</span> if (r.callHandler() != RestCallHandler.class)<a name="line.236"></a>
-<span class="sourceLineNo">237</span> setCallHandler(r.callHandler());<a name="line.237"></a>
-<span class="sourceLineNo">238</span> if (r.infoProvider() != RestInfoProvider.class)<a name="line.238"></a>
-<span class="sourceLineNo">239</span> setInfoProvider(r.infoProvider());<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span> HtmlDoc hd = r.htmldoc();<a name="line.241"></a>
-<span class="sourceLineNo">242</span> for (Class<? extends Widget> cw : hd.widgets())<a name="line.242"></a>
-<span class="sourceLineNo">243</span> addHtmlWidget(cw);<a name="line.243"></a>
-<span class="sourceLineNo">244</span> setHtmlHeader(resolveNewlineSeparatedAnnotation(hd.header(), htmlHeader));<a name="line.244"></a>
-<span class="sourceLineNo">245</span> setHtmlNav(resolveNewlineSeparatedAnnotation(hd.nav(), htmlNav));<a name="line.245"></a>
-<span class="sourceLineNo">246</span> setHtmlAside(resolveNewlineSeparatedAnnotation(hd.aside(), htmlAside));<a name="line.246"></a>
-<span class="sourceLineNo">247</span> setHtmlFooter(resolveNewlineSeparatedAnnotation(hd.footer(), htmlFooter));<a name="line.247"></a>
-<span class="sourceLineNo">248</span> setHtmlStyle(resolveNewlineSeparatedAnnotation(hd.style(), htmlStyle));<a name="line.248"></a>
-<span class="sourceLineNo">249</span> setHtmlScript(resolveNewlineSeparatedAnnotation(hd.script(), htmlScript));<a name="line.249"></a>
-<span class="sourceLineNo">250</span> setHtmlLinks(resolveLinks(hd.links(), htmlLinks));<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span> if (! hd.stylesheet().isEmpty())<a name="line.252"></a>
-<span class="sourceLineNo">253</span> setHtmlStylesheet(hd.stylesheet());<a name="line.253"></a>
-<span class="sourceLineNo">254</span> if (! hd.noResultsMessage().isEmpty())<a name="line.254"></a>
-<span class="sourceLineNo">255</span> setHtmlNoResultsMessage(hd.noResultsMessage());<a name="line.255"></a>
-<span class="sourceLineNo">256</span> if (hd.nowrap())<a name="line.256"></a>
-<span class="sourceLineNo">257</span> setHtmlNoWrap(true);<a name="line.257"></a>
-<span class="sourceLineNo">258</span> if (hd.template() != HtmlDocTemplate.class)<a name="line.258"></a>
-<span class="sourceLineNo">259</span> setHtmlTemplate(hd.template());<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> addResponseHandlers(<a name="line.262"></a>
-<span class="sourceLineNo">263</span> StreamableHandler.class,<a name="line.263"></a>
-<span class="sourceLineNo">264</span> WritableHandler.class,<a name="line.264"></a>
-<span class="sourceLineNo">265</span> ReaderHandler.class,<a name="line.265"></a>
-<span class="sourceLineNo">266</span> InputStreamHandler.class,<a name="line.266"></a>
-<span class="sourceLineNo">267</span> RedirectHandler.class,<a name="line.267"></a>
-<span class="sourceLineNo">268</span> DefaultHandler.class<a name="line.268"></a>
-<span class="sourceLineNo">269</span> );<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span> } catch (Exception e) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span> throw new ServletException(e);<a name="line.272"></a>
-<span class="sourceLineNo">273</span> }<a name="line.273"></a>
-<span class="sourceLineNo">274</span> }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span> /**<a name="line.276"></a>
-<span class="sourceLineNo">277</span> * Adds the specified {@link Var} classes to this config.<a name="line.277"></a>
-<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> * These variables affect the variable resolver returned by {@link RestRequest#getVarResolverSession()} which is<a name="line.280"></a>
-<span class="sourceLineNo">281</span> * used to resolve string variables of the form <js>"$X{...}"</js>.<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> * By default, this config includes the following variables:<a name="line.284"></a>
-<span class="sourceLineNo">285</span> * <ul><a name="line.285"></a>
-<span class="sourceLineNo">286</span> * <li>{@link SystemPropertiesVar}<a name="line.286"></a>
-<span class="sourceLineNo">287</span> * <li>{@link EnvVariablesVar}<a name="line.287"></a>
-<span class="sourceLineNo">288</span> * <li>{@link ConfigFileVar}<a name="line.288"></a>
-<span class="sourceLineNo">289</span> * <li>{@link IfVar}<a name="line.289"></a>
-<span class="sourceLineNo">290</span> * <li>{@link SwitchVar}<a name="line.290"></a>
-<span class="sourceLineNo">291</span> * </ul><a name="line.291"></a>
-<span class="sourceLineNo">292</span> *<a name="line.292"></a>
-<span class="sourceLineNo">293</span> * <p><a name="line.293"></a>
-<span class="sourceLineNo">294</span> * Later during the construction of {@link RestContext}, we add the following variables:<a name="line.294"></a>
-<span class="sourceLineNo">295</span> * <ul><a name="line.295"></a>
-<span class="sourceLineNo">296</span> * <li>{@link LocalizationVar}<a name="line.296"></a>
-<span class="sourceLineNo">297</span> * <li>{@link RequestVar}<a name="line.297"></a>
-<span class="sourceLineNo">298</span> * <li>{@link SerializedRequestAttrVar}<a name="line.298"></a>
-<span class="sourceLineNo">299</span> * <li>{@link ServletInitParamVar}<a name="line.299"></a>
-<span class="sourceLineNo">300</span> * <li>{@link UrlVar}<a name="line.300"></a>
-<span class="sourceLineNo">301</span> * <li>{@link UrlEncodeVar}<a name="line.301"></a>
-<span class="sourceLineNo">302</span> * <li>{@link WidgetVar}<a name="line.302"></a>
-<span class="sourceLineNo">303</span> * </ul><a name="line.303"></a>
-<span class="sourceLineNo">304</span> *<a name="line.304"></a>
-<span class="sourceLineNo">305</span> * @param vars The {@link Var} classes to add to this config.<a name="line.305"></a>
-<span class="sourceLineNo">306</span> * @return This object (for method chaining).<a name="line.306"></a>
-<span class="sourceLineNo">307</span> */<a name="line.307"></a>
-<span class="sourceLineNo">308</span> public RestConfig addVars(Class<?>...vars) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span> this.varResolverBuilder.vars(vars);<a name="line.309"></a>
-<span class="sourceLineNo">310</span> return this;<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> * Adds a var context object to this config.<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> * Var context objects are read-only objects associated with the variable resolver for vars that require external<a name="line.317"></a>
-<span class="sourceLineNo">318</span> * information.<a name="line.318"></a>
-<span class="sourceLineNo">319</span> *<a name="line.319"></a>
-<span class="sourceLineNo">320</span> * <p><a name="line.320"></a>
-<span class="sourceLineNo">321</span> * For example, the {@link ConfigFileVar} needs access to this resource's {@link ConfigFile} through the<a name="line.321"></a>
-<span class="sourceLineNo">322</span> * {@link ConfigFileVar#SESSION_config} object that can be specified as either a session object (temporary) or<a name="line.322"></a>
-<span class="sourceLineNo">323</span> * context object (permanent).<a name="line.323"></a>
-<span class="sourceLineNo">324</span> * In this case, we call the following code to add it to the context map:<a name="line.324"></a>
-<span class="sourceLineNo">325</span> * <p class='bcode'><a name="line.325"></a>
-<span class="sourceLineNo">326</span> * config.addVarContextObject(<jsf>SESSION_config</jsf>, configFile);<a name="line.326"></a>
-<span class="sourceLineNo">327</span> * </p><a name="line.327"></a>
-<span class="sourceLineNo">328</span> *<a name="line.328"></a>
-<span class="sourceLineNo">329</span> * @param name The context object key (i.e. the name that the Var class looks for).<a name="line.329"></a>
-<span class="sourceLineNo">330</span> * @param object The context object.<a name="line.330"></a>
-<span class="sourceLineNo">331</span> * @return This object (for method chaining).<a name="line.331"></a>
-<span class="sourceLineNo">332</span> */<a name="line.332"></a>
-<span class="sourceLineNo">333</span> public RestConfig addVarContextObject(String name, Object object) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span> this.varResolverBuilder.contextObject(name, object);<a name="line.334"></a>
-<span class="sourceLineNo">335</span> return this;<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> * Overwrites the default config file with a custom config file.<a name="line.339"></a>
-<span class="sourceLineNo">340</span> *<a name="line.340"></a>
-<span class="sourceLineNo">341</span> * <p><a name="line.341"></a>
-<span class="sourceLineNo">342</span> * By default, the config file is determined using the {@link RestResource#config() @RestResource.config()}<a name="line.342"></a>
-<span class="sourceLineNo">343</span> * annotation.<a name="line.343"></a>
-<span class="sourceLineNo">344</span> * This method allows you to programmatically override it with your own custom config file.<a name="line.344"></a>
-<span class="sourceLineNo">345</span> *<a name="line.345"></a>
-<span class="sourceLineNo">346</span> * @param configFile The new config file.<a name="line.346"></a>
-<span class="sourceLineNo">347</span> * @return This object (for method chaining).<a name="line.347"></a>
-<span class="sourceLineNo">348</span> */<a name="line.348"></a>
-<span class="sourceLineNo">349</span> public RestConfig setConfigFile(ConfigFile configFile) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span> this.configFile = configFile;<a name="line.350"></a>
-<span class="sourceLineNo">351</span> return this;<a name="line.351"></a>
-<span class="sourceLineNo">352</span> }<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span> /**<a name="line.354"></a>
-<span class="sourceLineNo">355</span> * Sets a property on this resource.<a name="line.355"></a>
-<span class="sourceLineNo">356</span> *<a name="line.356"></a>
-<span class="sourceLineNo">357</span> * <p><a name="line.357"></a>
-<span class="sourceLineNo">358</span> * This is the programmatic equivalent to the {@link RestResource#properties()} annotation.<a name="line.358"></a>
+<span class="sourceLineNo">021</span>import java.lang.reflect.Method;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.*;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import javax.activation.*;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import javax.servlet.*;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import javax.servlet.http.*;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.juneau.*;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.juneau.encoders.*;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.juneau.encoders.Encoder;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.juneau.html.*;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.juneau.http.*;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.juneau.ini.*;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.juneau.internal.*;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.juneau.parser.*;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.juneau.rest.annotation.*;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.juneau.rest.response.*;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.juneau.rest.vars.*;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.juneau.rest.widget.*;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.juneau.serializer.*;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.juneau.svl.*;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.juneau.svl.vars.*;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.juneau.utils.*;<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> * Defines the initial configuration of a <code>RestServlet</code> or <code>@RestResource</code> annotated object.<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> * An extension of the {@link ServletConfig} object used during servlet initialization.<a name="line.49"></a>
+<span class="sourceLineNo">050</span> *<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * <p><a name="line.51"></a>
+<span class="sourceLineNo">052</span> * Provides access to the following initialized resources:<a name="line.52"></a>
+<span class="sourceLineNo">053</span> * <ul><a name="line.53"></a>
+<span class="sourceLineNo">054</span> * <li>{@link #getConfigFile()} - The external configuration file for this resource.<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * <li>{@link #getProperties()} - The modifiable configuration properties for this resource.<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * <li>{@link #getVarResolverBuilder()} - The variable resolver for this resource.<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> * Methods are provided for overriding or augmenting the information provided by the <ja>@RestResource</ja> annotation.<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * In general, most information provided in the <ja>@RestResource</ja> annotation can be specified programmatically<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * through calls on this object.<a name="line.62"></a>
+<span class="sourceLineNo">063</span> *<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * <p><a name="line.64"></a>
+<span class="sourceLineNo">065</span> * To interact with this object, simply implement the following init method in your resource class:<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * <p class='bcode'><a name="line.66"></a>
+<span class="sourceLineNo">067</span> * <jk>public synchronized void</jk> init(RestConfig config) <jk>throws</jk> Exception {<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * config.addPojoSwaps(CalendarSwap.<jsf>RFC2822DTZ</jsf>.<jk>class</jk>);<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * config.setProperty(<jsf>PARSER_debug</jsf>, <jk>true</jk>);<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * <jk>super</jk>.init(config); <jc>// Make sure this is the last line! (or just leave it out entirely)</jc><a name="line.70"></a>
+<span class="sourceLineNo">071</span> * }<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * </p><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> * Note that this method is identical to {@link HttpServlet#init(ServletConfig)} except you get access to<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * this object instead. Also, this method can throw any exception, not just a {@link ServletException}.<a name="line.76"></a>
+<span class="sourceLineNo">077</span> *<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * <p><a name="line.78"></a>
+<span class="sourceLineNo">079</span> * The parent <code>init(RestServletConfig)</code> method will construct a read-only {@link RestContext} object<a name="line.79"></a>
+<span class="sourceLineNo">080</span> * that contains a snapshot of these settings. If you call <code><jk>super</jk>.init(RestServletConfig)</code> before<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * you modify this config object, you won't see the changes!<a name="line.81"></a>
+<span class="sourceLineNo">082</span> */<a name="line.82"></a>
+<span class="sourceLineNo">083</span>@SuppressWarnings({"hiding"})<a name="line.83"></a>
+<span class="sourceLineNo">084</span>public class RestConfig implements ServletConfig {<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span> final ServletConfig inner;<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> // The following fields are meant to be modifiable.<a name="line.89"></a>
+<span class="sourceLineNo">090</span> // They should not be declared final.<a name="line.90"></a>
+<span class="sourceLineNo">091</span> // Read-only snapshots of these will be made in RestServletContext.<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> ObjectMap properties;<a name="line.94"></a>
+<span class="sourceLineNo">095</span> ConfigFile configFile;<a name="line.95"></a>
+<span class="sourceLineNo">096</span> VarResolverBuilder varResolverBuilder;<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span> List<Class<?>><a name="line.98"></a>
+<span class="sourceLineNo">099</span> beanFilters = new ArrayList<Class<?>>(),<a name="line.99"></a>
+<span class="sourceLineNo">100</span> pojoSwaps = new ArrayList<Class<?>>(),<a name="line.100"></a>
+<span class="sourceLineNo">101</span> paramResolvers = new ArrayList<Class<?>>();<a name="line.101"></a>
+<span class="sourceLineNo">102</span> Class<? extends SerializerListener> serializerListener;<a name="line.102"></a>
+<span class="sourceLineNo">103</span> Class<? extends ParserListener> parserListener;<a name="line.103"></a>
+<span class="sourceLineNo">104</span> SerializerGroupBuilder serializers = new SerializerGroupBuilder();<a name="line.104"></a>
+<span class="sourceLineNo">105</span> ParserGroupBuilder parsers = new ParserGroupBuilder();<a name="line.105"></a>
+<span class="sourceLineNo">106</span> EncoderGroupBuilder encoders = new EncoderGroupBuilder().append(IdentityEncoder.INSTANCE);<a name="line.106"></a>
+<span class="sourceLineNo">107</span> List<Object> converters = new ArrayList<Object>();<a name="line.107"></a>
+<span class="sourceLineNo">108</span> List<Object> guards = new ArrayList<Object>();<a name="line.108"></a>
+<span class="sourceLineNo">109</span> MimetypesFileTypeMap mimeTypes = new ExtendedMimetypesFileTypeMap();<a name="line.109"></a>
+<span class="sourceLineNo">110</span> Map<String,String> defaultRequestHeaders = new TreeMap<String,String>(String.CASE_INSENSITIVE_ORDER);<a name="line.110"></a>
+<span class="sourceLineNo">111</span> Map<String,Object> defaultResponseHeaders = new LinkedHashMap<String,Object>();<a name="line.111"></a>
+<span class="sourceLineNo">112</span> List<Object> responseHandlers = new ArrayList<Object>();<a name="line.112"></a>
+<span class="sourceLineNo">113</span> List<Object> childResources = new ArrayList<Object>();<a name="line.113"></a>
+<span class="sourceLineNo">114</span> List<MediaType> supportedContentTypes, supportedAcceptTypes;<a name="line.114"></a>
+<span class="sourceLineNo">115</span> Object favIcon;<a name="line.115"></a>
+<span class="sourceLineNo">116</span> List<Object> staticFiles;<a name="line.116"></a>
+<span class="sourceLineNo">117</span> RestContext parentContext;<a name="line.117"></a>
+<span class="sourceLineNo">118</span> String path, htmlHeader, htmlNav, htmlAside, htmlFooter, htmlStyle, htmlStylesheet, htmlScript, htmlNoResultsMessage;<a name="line.118"></a>
+<span class="sourceLineNo">119</span> String[] htmlLinks;<a name="line.119"></a>
+<span class="sourceLineNo">120</span> String clientVersionHeader = "X-Client-Version";<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span> Object resourceResolver = RestResourceResolverSimple.class;<a name="line.122"></a>
+<span class="sourceLineNo">123</span> Object logger = RestLogger.Normal.class;<a name="line.123"></a>
+<span class="sourceLineNo">124</span> Object callHandler = RestCallHandler.class;<a name="line.124"></a>
+<span class="sourceLineNo">125</span> Object infoProvider = RestInfoProvider.class;<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span> boolean htmlNoWrap;<a name="line.127"></a>
+<span class="sourceLineNo">128</span> Object htmlTemplate = HtmlDocTemplateBasic.class;<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span> Class<?> resourceClass;<a name="line.130"></a>
+<span class="sourceLineNo">131</span> List<Class<? extends Widget>> htmlWidgets = new ArrayList<Class<? extends Widget>>();<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span> /**<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * Constructor for top-level servlets when using dependency injection.<a name="line.134"></a>
+<span class="sourceLineNo">135</span> *<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * <p><a name="line.136"></a>
+<span class="sourceLineNo">137</span> * Work-in-progress.<a name="line.137"></a>
+<span class="sourceLineNo">138</span> *<a name="line.138"></a>
+<span class="sourceLineNo">139</span> * @param config<a name="line.139"></a>
+<span class="sourceLineNo">140</span> * The servlet config object we're extending.<a name="line.140"></a>
+<span class="sourceLineNo">141</span> * @param resourceClass<a name="line.141"></a>
+<span class="sourceLineNo">142</span> * The class annotated with the {@link RestResource @RestResource} annotation.<a name="line.142"></a>
+<span class="sourceLineNo">143</span> * @throws ServletException<a name="line.143"></a>
+<span class="sourceLineNo">144</span> */<a name="line.144"></a>
+<span class="sourceLineNo">145</span> public RestConfig(ServletConfig config, Class<?> resourceClass) throws ServletException {<a name="line.145"></a>
+<span class="sourceLineNo">146</span> this(config, resourceClass, null);<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> * Constructor.<a name="line.150"></a>
+<span class="sourceLineNo">151</span> *<a name="line.151"></a>
+<span class="sourceLineNo">152</span> * @param config The servlet config passed into the servlet by the servlet container.<a name="line.152"></a>
+<span class="sourceLineNo">153</span> * @param resource The class annotated with <ja>@RestResource</ja>.<a name="line.153"></a>
+<span class="sourceLineNo">154</span> * @throws ServletException Something bad happened.<a name="line.154"></a>
+<span class="sourceLineNo">155</span> */<a name="line.155"></a>
+<span class="sourceLineNo">156</span> RestConfig(ServletConfig config, Class<?> resourceClass, RestContext parentContext) throws ServletException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span> this.inner = config;<a name="line.157"></a>
+<span class="sourceLineNo">158</span> this.resourceClass = resourceClass;<a name="line.158"></a>
+<span class="sourceLineNo">159</span> this.parentContext = parentContext;<a name="line.159"></a>
+<span class="sourceLineNo">160</span> this.resourceResolver = parentContext == null ? RestResourceResolverSimple.class : parentContext.getResourceResolver();<a name="line.160"></a>
+<span class="sourceLineNo">161</span> try {<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span> ConfigFileBuilder cfb = new ConfigFileBuilder();<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span> properties = new ObjectMap();<a name="line.165"></a>
+<span class="sourceLineNo">166</span> configFile = cfb.build();<a name="line.166"></a>
+<span class="sourceLineNo">167</span> varResolverBuilder = new VarResolverBuilder()<a name="line.167"></a>
+<span class="sourceLineNo">168</span> .vars(<a name="line.168"></a>
+<span class="sourceLineNo">169</span> SystemPropertiesVar.class,<a name="line.169"></a>
+<span class="sourceLineNo">170</span> EnvVariablesVar.class,<a name="line.170"></a>
+<span class="sourceLineNo">171</span> ConfigFileVar.class,<a name="line.171"></a>
+<span class="sourceLineNo">172</span> IfVar.class,<a name="line.172"></a>
+<span class="sourceLineNo">173</span> SwitchVar.class<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> VarResolver vr = varResolverBuilder.build();<a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">178</span> Map<Class<?>,RestResource> restResourceAnnotationsParentFirst = findAnnotationsMapParentFirst(RestResource.class, resourceClass);<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span> // Find our config file. It's the last non-empty @RestResource.config().<a name="line.180"></a>
+<span class="sourceLineNo">181</span> String configPath = "";<a name="line.181"></a>
+<span class="sourceLineNo">182</span> for (RestResource r : restResourceAnnotationsParentFirst.values())<a name="line.182"></a>
+<span class="sourceLineNo">183</span> if (! r.config().isEmpty())<a name="line.183"></a>
+<span class="sourceLineNo">184</span> configPath = r.config();<a name="line.184"></a>
+<span class="sourceLineNo">185</span> String cf = vr.resolve(configPath);<a name="line.185"></a>
+<span class="sourceLineNo">186</span> if (! cf.isEmpty())<a name="line.186"></a>
+<span class="sourceLineNo">187</span> configFile = cfb.build(cf);<a name="line.187"></a>
+<span class="sourceLineNo">188</span> configFile = configFile.getResolving(vr);<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span> // Add our config file to the variable resolver.<a name="line.190"></a>
+<span class="sourceLineNo">191</span> varResolverBuilder.contextObject(ConfigFileVar.SESSION_config, configFile);<a name="line.191"></a>
+<span class="sourceLineNo">192</span> vr = varResolverBuilder.build();<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span> // Add the servlet init parameters to our properties.<a name="line.194"></a>
+<span class="sourceLineNo">195</span> for (Enumeration<String> ep = config.getInitParameterNames(); ep.hasMoreElements();) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span> String p = ep.nextElement();<a name="line.196"></a>
+<span class="sourceLineNo">197</span> String initParam = config.getInitParameter(p);<a name="line.197"></a>
+<span class="sourceLineNo">198</span> properties.put(vr.resolve(p), vr.resolve(initParam));<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> // Load stuff from parent-to-child order.<a name="line.201"></a>
+<span class="sourceLineNo">202</span> // This allows child settings to overwrite parent settings.<a name="line.202"></a>
+<span class="sourceLineNo">203</span> for (Map.Entry<Class<?>,RestResource> e : restResourceAnnotationsParentFirst.entrySet()) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span> Class<?> c = e.getKey();<a name="line.204"></a>
+<span class="sourceLineNo">205</span> RestResource r = e.getValue();<a name="line.205"></a>
+<span class="sourceLineNo">206</span> for (Property p : r.properties())<a name="line.206"></a>
+<span class="sourceLineNo">207</span> properties.append(vr.resolve(p.name()), vr.resolve(p.value()));<a name="line.207"></a>
+<span class="sourceLineNo">208</span> for (String p : r.flags())<a name="line.208"></a>
+<span class="sourceLineNo">209</span> properties.append(p, true);<a name="line.209"></a>
+<span class="sourceLineNo">210</span> addSerializers(r.serializers());<a name="line.210"></a>
+<span class="sourceLineNo">211</span> addParsers(r.parsers());<a name="line.211"></a>
+<span class="sourceLineNo">212</span> addEncoders(r.encoders());<a name="line.212"></a>
+<span class="sourceLineNo">213</span> addDefaultRequestHeaders(r.defaultRequestHeaders());<a name="line.213"></a>
+<span class="sourceLineNo">214</span> addDefaultResponseHeaders(r.defaultResponseHeaders());<a name="line.214"></a>
+<span class="sourceLineNo">215</span> addResponseHandlers(r.responseHandlers());<a name="line.215"></a>
+<span class="sourceLineNo">216</span> addConverters(r.converters());<a name="line.216"></a>
+<span class="sourceLineNo">217</span> addGuards(reverse(r.guards()));<a name="line.217"></a>
+<span class="sourceLineNo">218</span> addChildResources(r.children());<a name="line.218"></a>
+<span class="sourceLineNo">219</span> addBeanFilters(r.beanFilters());<a name="line.219"></a>
+<span class="sourceLineNo">220</span> addPojoSwaps(r.pojoSwaps());<a name="line.220"></a>
+<span class="sourceLineNo">221</span> addParamResolvers(r.paramResolvers());<a name="line.221"></a>
+<span class="sourceLineNo">222</span> serializerListener(r.serializerListener());<a name="line.222"></a>
+<span class="sourceLineNo">223</span> parserListener(r.parserListener());<a name="line.223"></a>
+<span class="sourceLineNo">224</span> if (! r.favicon().isEmpty())<a name="line.224"></a>
+<span class="sourceLineNo">225</span> setFavIcon(c, r.favicon());<a name="line.225"></a>
+<span class="sourceLineNo">226</span> if (! r.staticFiles().isEmpty())<a name="line.226"></a>
+<span class="sourceLineNo">227</span> addStaticFiles(c, r.staticFiles());<a name="line.227"></a>
+<span class="sourceLineNo">228</span> if (! r.path().isEmpty())<a name="line.228"></a>
+<span class="sourceLineNo">229</span> setPath(r.path());<a name="line.229"></a>
+<span class="sourceLineNo">230</span> if (! r.clientVersionHeader().isEmpty())<a name="line.230"></a>
+<span class="sourceLineNo">231</span> setClientVersionHeader(r.clientVersionHeader());<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span> if (r.resourceResolver() != RestResourceResolver.class)<a name="line.233"></a>
+<span class="sourceLineNo">234</span> setResourceResolver(r.resourceResolver());<a name="line.234"></a>
+<span class="sourceLineNo">235</span> if (r.logger() != RestLogger.Normal.class)<a name="line.235"></a>
+<span class="sourceLineNo">236</span> setLogger(r.logger());<a name="line.236"></a>
+<span class="sourceLineNo">237</span> if (r.callHandler() != RestCallHandler.class)<a name="line.237"></a>
+<span class="sourceLineNo">238</span> setCallHandler(r.callHandler());<a name="line.238"></a>
+<span class="sourceLineNo">239</span> if (r.infoProvider() != RestInfoProvider.class)<a name="line.239"></a>
+<span class="sourceLineNo">240</span> setInfoProvider(r.infoProvider());<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span> HtmlDoc hd = r.htmldoc();<a name="line.242"></a>
+<span class="sourceLineNo">243</span> for (Class<? extends Widget> cw : hd.widgets())<a name="line.243"></a>
+<span class="sourceLineNo">244</span> addHtmlWidget(cw);<a name="line.244"></a>
+<span class="sourceLineNo">245</span> setHtmlHeader(resolveNewlineSeparatedAnnotation(hd.header(), htmlHeader));<a name="line.245"></a>
+<span class="sourceLineNo">246</span> setHtmlNav(resolveNewlineSeparatedAnnotation(hd.nav(), htmlNav));<a name="line.246"></a>
+<span class="sourceLineNo">247</span> setHtmlAside(resolveNewlineSeparatedAnnotation(hd.aside(), htmlAside));<a name="line.247"></a>
+<span class="sourceLineNo">248</span> setHtmlFooter(resolveNewlineSeparatedAnnotation(hd.footer(), htmlFooter));<a name="line.248"></a>
+<span class="sourceLineNo">249</span> setHtmlStyle(resolveNewlineSeparatedAnnotation(hd.style(), htmlStyle));<a name="line.249"></a>
+<span class="sourceLineNo">250</span> setHtmlScript(resolveNewlineSeparatedAnnotation(hd.script(), htmlScript));<a name="line.250"></a>
+<span class="sourceLineNo">251</span> setHtmlLinks(resolveLinks(hd.links(), htmlLinks));<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span> if (! hd.stylesheet().isEmpty())<a name="line.253"></a>
+<span class="sourceLineNo">254</span> setHtmlStylesheet(hd.stylesheet());<a name="line.254"></a>
+<span class="sourceLineNo">255</span> if (! hd.noResultsMessage().isEmpty())<a name="line.255"></a>
+<span class="sourceLineNo">256</span> setHtmlNoResultsMessage(hd.noResultsMessage());<a name="line.256"></a>
+<span class="sourceLineNo">257</span> if (hd.nowrap())<a name="line.257"></a>
+<span class="sourceLineNo">258</span> setHtmlNoWrap(true);<a name="line.258"></a>
+<span class="sourceLineNo">259</span> if (hd.template() != HtmlDocTemplate.class)<a name="line.259"></a>
+<span class="sourceLineNo">260</span> setHtmlTemplate(hd.template());<a name="line.260"></a>
+<span class="sourceLineNo">261</span> }<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span> addResponseHandlers(<a name="line.263"></a>
+<span class="sourceLineNo">264</span> StreamableHandler.class,<a name="line.264"></a>
+<span class="sourceLineNo">265</span> WritableHandler.class,<a name="line.265"></a>
+<span class="sourceLineNo">266</span> ReaderHandler.class,<a name="line.266"></a>
+<span class="sourceLineNo">267</span> InputStreamHandler.class,<a name="line.267"></a>
+<span class="sourceLineNo">268</span> RedirectHandler.class,<a name="line.268"></a>
+<span class="sourceLineNo">269</span> DefaultHandler.class<a name="line.269"></a>
+<span class="sourceLineNo">270</span> );<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span> } catch (Exception e) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span> throw new ServletException(e);<a name="line.273"></a>
+<span class="sourceLineNo">274</span> }<a name="line.274"></a>
+<span class="sourceLineNo">275</span> }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span> /*<a name="line.277"></a>
+<span class="sourceLineNo">278</span> * Calls all @RestHook(INIT) methods on the specified resource object.<a name="line.278"></a>
+<span class="sourceLineNo">279</span> */<a name="line.279"></a>
+<span class="sourceLineNo">280</span> void init(Object resource) throws ServletException {<a name="line.280"></a>
+<span class="sourceLineNo">281</span> Map<String,Method> map = new LinkedHashMap<String,Method>();<a name="line.281"></a>
+<span class="sourceLineNo">282</span> for (Method m : ClassUtils.getAllMethods(this.resourceClass, true)) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span> if (m.isAnnotationPresent(RestHook.class) && m.getAnnotation(RestHook.class).value() == HookEvent.INIT) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span> String sig = ClassUtils.getMethodSignature(m);<a name="line.284"></a>
+<span class="sourceLineNo">285</span> if (! map.containsKey(sig))<a name="line.285"></a>
+<span class="sourceLineNo">286</span> map.put(sig, m);<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> for (Method m : map.values()) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span> ClassUtils.assertArgsOfType(m, RestConfig.class, ServletConfig.class);<a name="line.290"></a>
+<span class="sourceLineNo">291</span> Class<?>[] argTypes = m.getParameterTypes();<a name="line.291"></a>
+<span class="sourceLineNo">292</span> Object[] args = new Object[argTypes.length];<a name="line.292"></a>
+<span class="sourceLineNo">293</span> for (int i = 0; i < args.length; i++) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span> if (argTypes[i] == RestConfig.class)<a name="line.294"></a>
+<span class="sourceLineNo">295</span> args[i] = this;<a name="line.295"></a>
+<span class="sourceLineNo">296</span> else<a name="line.296"></a>
+<span class="sourceLineNo">297</span> args[i] = this.inner;<a name="line.297"></a>
+<span class="sourceLineNo">298</span> }<a name="line.298"></a>
+<span class="sourceLineNo">299</span> try {<a name="line.299"></a>
+<span class="sourceLineNo">300</span> m.invoke(resource, args);<a name="line.300"></a>
+<span class="sourceLineNo">301</span> } catch (Exception e) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span> throw new RestServletException("Exception thrown from @RestHook(INIT) method {0}.", m).initCause(e);<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> }<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> * Adds the specified {@link Var} classes to this config.<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> * These variables affect the variable resolver returned by {@link RestRequest#getVarResolverSession()} which is<a name="line.311"></a>
+<span class="sourceLineNo">312</span> * used to resolve string variables of the form <js>"$X{...}"</js>.<a name="line.312"></a>
+<span class="sourceLineNo">313</span> *<a name="line.313"></a>
+<span class="sourceLineNo">314</span> * <p><a name="line.314"></a>
+<span class="sourceLineNo">315</span> * By default, this config includes the following variables:<a name="line.315"></a>
+<span class="sourceLineNo">316</span> * <ul><a name="line.316"></a>
+<span class="sourceLineNo">317</span> * <li>{@link SystemPropertiesVar}<a name="line.317"></a>
+<span class="sourceLineNo">318</span> * <li>{@link EnvVariablesVar}<a name="line.318"></a>
+<span class="sourceLineNo">319</span> * <li>{@link ConfigFileVar}<a name="line.319"></a>
+<span class="sourceLineNo">320</span> * <li>{@link IfVar}<a name="line.320"></a>
+<span class="sourceLineNo">321</span> * <li>{@link SwitchVar}<a name="line.321"></a>
+<span class="sourceLineNo">322</span> * </ul><a name="line.322"></a>
+<span class="sourceLineNo">323</span> *<a name="line.323"></a>
+<span class="sourceLineNo">324</span> * <p><a name="line.324"></a>
+<span class="sourceLineNo">325</span> * Later during the construction of {@link RestContext}, we add the following variables:<a name="line.325"></a>
+<span class="sourceLineNo">326</span> * <ul><a name="line.326"></a>
+<span class="sourceLineNo">327</span> * <li>{@link LocalizationVar}<a name="line.327"></a>
+<span class="sourceLineNo">328</span> * <li>{@link RequestVar}<a name="line.328"></a>
+<span class="sourceLineNo">329</span> * <li>{@link SerializedRequestAttrVar}<a name="line.329"></a>
+<span class="sourceLineNo">330</span> * <li>{@link ServletInitParamVar}<a name="line.330"></a>
+<span class="sourceLineNo">331</span> * <li>{@link UrlVar}<a name="line.331"></a>
+<span class="sourceLineNo">332</span> * <li>{@link UrlEncodeVar}<a name="line.332"></a>
+<span class="sourceLineNo">333</span> * <li>{@link WidgetVar}<a name="line.333"></a>
+<span class="sourceLineNo">334</span> * </ul><a name="line.334"></a>
+<span class="sourceLineNo">335</span> *<a name="line.335"></a>
+<span class="sourceLineNo">336</span> * @param vars The {@link Var} classes to add to this config.<a name="line.336"></a>
+<span class="sourceLineNo">337</span> * @return This object (for method chaining).<a name="line.337"></a>
+<span class="sourceLineNo">338</span> */<a name="line.338"></a>
+<span class="sourceLineNo">339</span> public RestConfig addVars(Class<?>...vars) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span> this.varResolverBuilder.vars(vars);<a name="line.340"></a>
+<span class="sourceLineNo">341</span> return this;<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> /**<a name="line.344"></a>
+<span class="sourceLineNo">345</span> * Adds a var context object to this config.<a name="line.345"></a>
+<span class="sourceLineNo">346</span> *<a name="line.346"></a>
+<span class="sourceLineNo">347</span> * <p><a name="line.347"></a>
+<span class="sourceLineNo">348</span> * Var context objects are read-only objects associated with the variable resolver for vars that require external<a name="line.348"></a>
+<span class="sourceLineNo">349</span> * information.<a name="line.349"></a>
+<span class="sourceLineNo">350</span> *<a name="line.350"></a>
+<span class="sourceLineNo">351</span> * <p><a name="line.351"></a>
+<span class="sourceLineNo">352</span> * For example, the {@link ConfigFileVar} needs access to this resource's {@link ConfigFile} through the<a name="line.352"></a>
+<span class="sourceLineNo">353</span> * {@link ConfigFileVar#SESSION_config} object that can be specified as either a session object (temporary) or<a name="line.353"></a>
+<span class="sourceLineNo">354</span> * context object (permanent).<a name="line.354"></a>
+<span class="sourceLineNo">355</span> * In this case, we call the following code to add it to the context map:<a name="line.355"></a>
+<span class="sourceLineNo">356</span> * <p class='bcode'><a name="line.356"></a>
+<span class="sourceLineNo">357</span> * config.addVarContextObject(<jsf>SESSION_config</jsf>, configFile);<a name="line.357"></a>
+<span class="sourceLineNo">358</span> * </p><a name="line.358"></a>
<span class="sourceLineNo">359</span> *<a name="line.359"></a>
-<span class="sourceLineNo">360</span> * @param key The property name.<a name="line.360"></a>
-<span class="sourceLineNo">361</span> * @param value The property value.<a name="line.361"></a>
+<span class="sourceLineNo">360</span> * @param name The context object key (i.e. the name that the Var class looks for).<a name="line.360"></a>
+<span class="sourceLineNo">361</span> * @param object The context object.<a name="line.361"></a>
<span class="sourceLineNo">362</span> * @return This object (for method chaining).<a name="line.362"></a>
<span class="sourceLineNo">363</span> */<a name="line.363"></a>
-<span class="sourceLineNo">364</span> public RestConfig setProperty(String key, Object value) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span> this.properties.put(key, value);<a name="line.365"></a>
+<span class="sourceLineNo">364</span> public RestConfig addVarContextObject(String name, Object object) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span> this.varResolverBuilder.contextObject(name, object);<a name="line.365"></a>
<span class="sourceLineNo">366</span> return this;<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> /**<a name="line.369"></a>
-<span class="sourceLineNo">370</span> * Sets multiple properties on this resource.<a name="line.370"></a>
+<span class="sourceLineNo">370</span> * Overwrites the default config file with a custom config file.<a name="line.370"></a>
<span class="sourceLineNo">371</span> *<a name="line.371"></a>
<span class="sourceLineNo">372</span> * <p><a name="line.372"></a>
-<span class="sourceLineNo">373</span> * This is the programmatic equivalent to the {@link RestResource#properties() @RestResource.properties()} annotation.<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> * Values in the map are added to the existing properties and are overwritten if duplicates are found.<a name="line.376"></a>
-<span class="sourceLineNo">377</span> *<a name="line.377"></a>
-<span class="sourceLineNo">378</span> * @param properties The new properties to add to this config.<a name="line.378"></a>
-<span class="sourceLineNo">379</span> * @return This object (for method chaining).<a name="line.379"></a>
-<span class="sourceLineNo">380</span> */<a name="line.380"></a>
-<span class="sourceLineNo">381</span> public RestConfig setProperties(Map<String,Object> properties) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span> this.properties.putAll(properties);<a name="line.382"></a>
-<span class="sourceLineNo">383</span> return this;<a name="line.383"></a>
-<span class="sourceLineNo">384</span> }<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> * Adds class-level bean filters to this resource.<a name="line.387"></a>
-<span class="sourceLineNo">388</span> *<a name="line.388"></a>
-<span class="sourceLineNo">389</span> * <p><a name="line.389"></a>
-<span class="sourceLineNo">390</span> * This is the programmatic equivalent to the {@link RestResource#beanFilters() @RestResource.beanFilters()}<a name="line.390"></a>
-<span class="sourceLineNo">391</span> * annotation.<a name="line.391"></a>
-<span class="sourceLineNo">392</span> *<a name="line.392"></a>
-<span class="sourceLineNo">393</span> * <p><a name="line.393"></a>
-<span class="sourceLineNo">394</span> * Values are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.394"></a>
-<span class="sourceLineNo">395</span> * annotation.<a name="line.395"></a>
-<span class="sourceLineNo">396</span> *<a name="line.396"></a>
-<span class="sourceLineNo">397</span> * @param beanFilters The bean filters to add to this config.<a name="line.397"></a>
-<span class="sourceLineNo">398</span> * @return This object (for method chaining).<a name="line.398"></a>
-<span class="sourceLineNo">399</span> */<a name="line.399"></a>
-<span class="sourceLineNo">400</span> public RestConfig addBeanFilters(Class<?>...beanFilters) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span> this.beanFilters.addAll(Arrays.asList(beanFilters));<a name="line.401"></a>
-<span class="sourceLineNo">402</span> return this;<a name="line.402"></a>
-<span class="sourceLineNo">403</span> }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span> /**<a name="line.405"></a>
-<span class="sourceLineNo">406</span> * Adds class-level pojo swaps to this resource.<a name="line.406"></a>
-<span class="sourceLineNo">407</span> *<a name="line.407"></a>
-<span class="sourceLineNo">408</span> * <p><a name="line.408"></a>
-<span class="sourceLineNo">409</span> * This is the programmatic equivalent to the {@link RestResource#pojoSwaps() @RestResource.pojoSwaps()} annotation.<a name="line.409"></a>
-<span class="sourceLineNo">410</span> *<a name="line.410"></a>
-<span class="sourceLineNo">411</span> * <p><a name="line.411"></a>
-<span class="sourceLineNo">412</span> * Values are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.412"></a>
-<span class="sourceLineNo">413</span> * annotation.<a name="line.413"></a>
-<span class="sourceLineNo">414</span> *<a name="line.414"></a>
-<span class="sourceLineNo">415</span> * @param pojoSwaps The pojo swaps to add to this config.<a name="line.415"></a>
-<span class="sourceLineNo">416</span> * @return This object (for method chaining).<a name="line.416"></a>
-<span class="sourceLineNo">417</span> */<a name="line.417"></a>
-<span class="sourceLineNo">418</span> public RestConfig addPojoSwaps(Class<?>...pojoSwaps) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span> this.pojoSwaps.addAll(Arrays.asList(pojoSwaps));<a name="line.419"></a>
-<span class="sourceLineNo">420</span> return this;<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> * Specifies the serializer listener class to use for listening to non-fatal serialization errors.<a name="line.424"></a>
-<span class="sourceLineNo">425</span> *<a name="line.425"></a>
-<span class="sourceLineNo">426</span> * <p><a name="line.426"></a>
-<span class="sourceLineNo">427</span> * This is the programmatic equivalent to the<a name="line.427"></a>
-<span class="sourceLineNo">428</span> * {@link RestResource#serializerListener() @RestResource.serializerListener()} annotation.<a name="line.428"></a>
-<span class="sourceLineNo">429</span> *<a name="line.429"></a>
-<span class="sourceLineNo">430</span> * @param listener The listener to add to this config.<a name="line.430"></a>
-<span class="sourceLineNo">431</span> * @return This object (for method chaining).<a name="line.431"></a>
-<span class="sourceLineNo">432</span> */<a name="line.432"></a>
-<span class="sourceLineNo">433</span> public RestConfig serializerListener(Class<? extends SerializerListener> listener) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span> if (listener != SerializerListener.class)<a name="line.434"></a>
-<span class="sourceLineNo">435</span> this.serializerListener = listener;<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> * Specifies the parser listener class to use for listening to non-fatal parse errors.<a name="line.440"></a>
+<span class="sourceLineNo">373</span> * By default, the config file is determined using the {@link RestResource#config() @RestResource.config()}<a name="line.373"></a>
+<span class="sourceLineNo">374</span> * annotation.<a name="line.374"></a>
+<span class="sourceLineNo">375</span> * This method allows you to programmatically override it with your own custom config file.<a name="line.375"></a>
+<span class="sourceLineNo">376</span> *<a name="line.376"></a>
+<span class="sourceLineNo">377</span> * @param configFile The new config file.<a name="line.377"></a>
+<span class="sourceLineNo">378</span> * @return This object (for method chaining).<a name="line.378"></a>
+<span class="sourceLineNo">379</span> */<a name="line.379"></a>
+<span class="sourceLineNo">380</span> public RestConfig setConfigFile(ConfigFile configFile) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span> this.configFile = configFile;<a name="line.381"></a>
+<span class="sourceLineNo">382</span> return this;<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> /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span> * Sets a property on this resource.<a name="line.386"></a>
+<span class="sourceLineNo">387</span> *<a name="line.387"></a>
+<span class="sourceLineNo">388</span> * <p><a name="line.388"></a>
+<span class="sourceLineNo">389</span> * This is the programmatic equivalent to the {@link RestResource#properties()} annotation.<a name="line.389"></a>
+<span class="sourceLineNo">390</span> *<a name="line.390"></a>
+<span class="sourceLineNo">391</span> * @param key The property name.<a name="line.391"></a>
+<span class="sourceLineNo">392</span> * @param value The property value.<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> */<a name="line.394"></a>
+<span class="sourceLineNo">395</span> public RestConfig setProperty(String key, Object value) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span> this.properties.put(key, value);<a name="line.396"></a>
+<span class="sourceLineNo">397</span> return this;<a name="line.397"></a>
+<span class="sourceLineNo">398</span> }<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> * Sets multiple properties on this resource.<a name="line.401"></a>
+<span class="sourceLineNo">402</span> *<a name="line.402"></a>
+<span class="sourceLineNo">403</span> * <p><a name="line.403"></a>
+<span class="sourceLineNo">404</span> * This is the programmatic equivalent to the {@link RestResource#properties() @RestResource.properties()} annotation.<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> * Values in the map are added to the existing properties and are overwritten if duplicates are found.<a name="line.407"></a>
+<span class="sourceLineNo">408</span> *<a name="line.408"></a>
+<span class="sourceLineNo">409</span> * @param properties The new properties to add to this config.<a name="line.409"></a>
+<span class="sourceLineNo">410</span> * @return This object (for method chaining).<a name="line.410"></a>
+<span class="sourceLineNo">411</span> */<a name="line.411"></a>
+<span class="sourceLineNo">412</span> public RestConfig setProperties(Map<String,Object> properties) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span> this.properties.putAll(properties);<a name="line.413"></a>
+<span class="sourceLineNo">414</span> return this;<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> /**<a name="line.417"></a>
+<span class="sourceLineNo">418</span> * Adds class-level bean filters to this resource.<a name="line.418"></a>
+<span class="sourceLineNo">419</span> *<a name="line.419"></a>
+<span class="sourceLineNo">420</span> * <p><a name="line.420"></a>
+<span class="sourceLineNo">421</span> * This is the programmatic equivalent to the {@link RestResource#beanFilters() @RestResource.beanFilters()}<a name="line.421"></a>
+<span class="sourceLineNo">422</span> * 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 are added AFTER those found in the annotation and therefore take precedence over those defined via the<a name="line.425"></a>
+<span class="sourceLineNo">426</span> * annotation.<a name="line.426"></a>
+<span class="sourceLineNo">427</span> *<a name="line.427"></a>
+<span class="sourceLineNo">428</span> * @param beanFilters The bean filters to add to this config.<a name="line.428"></a>
+<span class="sourceLineNo">429</span> * @return This object (for method chaining).<a name="line.429"></a>
+<span class="sourceLineNo">430</span> */<a name="line.430"></a>
+<span class="sourceLineNo">431</span> public RestConfig addBeanFilters(Class<?>...beanFilters) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span> this.beanFilters.addAll(Arrays.asList(beanFilters));<a name="line.432"></a>
+<span class="sourceLineNo">433</span> return this;<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> /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span> * Adds class-level pojo swaps to this resource.<a name="line.437"></a>
+<span class="sourceLineNo">438</span> *<a name="line.438"></a>
+<span class="sourceLineNo">439</span> * <p><a name="line.439"></a>
+<span class="sourceLineNo">440</span> * This is the programmatic equivalent to the {@link RestResource#pojoSwaps() @RestResource.pojoSwaps()} 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<a name="line.443"></a>
-<span class="sourceLineNo">444</span> * {@link RestResource#parserListener() @RestResource.parserListener()} annotation.<a name="line.444"></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 listener The listener to add to this config.<a name="line.446"></a>
+<span class="sourceLineNo">446</span> * @param pojoSwaps The pojo swaps 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 parserListener(Class<? extends ParserListener> listener) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span> if (listener != ParserListener.class)<a name="line.450"></a>
-<span class="sourceLineNo">451</span> this.parserListener = listener;<a name="line.451"></a>
-<span class="sourceLineNo">452</span> return this;<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> /**<a name="line.455"></a>
-<span class="sourceLineNo">456</span> * Adds class-level parameter resolvers to this resource.<a name="line.456"></a>
-<span class="sourceLineNo">457</span> *<a name="line.457"></a>
-<span class="sourceLineNo">458</span> * <p><a name="line.458"></a>
-<span class="sourceLineNo">459</span> * This is the programmatic equivalent to the<a name="line.459"></a>
-<span class="sourceLineNo">460</span> * {@link RestResource#paramResolvers() @RestResource.paramResolvers()} annotation.<a name="line.460"></a>
-<span class="sourceLineNo">461</span> *<a name="line.461"></a>
-<span class="sourceLineNo">462</span> * @param paramResolvers The parameter resolvers to add to this config.<a name="line.462"></a>
-<span class="sourceLineNo">463</span> * @return This object (for method chaining).<a name="line.463"></a>
-<span class="sourceLineNo">464</span> */<a name="line.464"></a>
-<span class="sourceLineNo">465</span> public RestConfig addParamResolvers(Class<? extends RestParam>...paramResolvers) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span> this.paramResolvers.addAll(Arrays.asList(paramResolvers));<a name="line.466"></a>
+<span class="sourceLineNo">449</span> public RestConfig addPojoSwaps(Class<?>...pojoSwaps) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span> this.pojoSwaps.addAll(Arrays.asList(pojoSwaps));<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>
<TRUNCATED>
[18/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/RestResponse.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestResponse.html b/content/site/apidocs/org/apache/juneau/rest/RestResponse.html
index 9d9aff1..c17cd6b 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestResponse.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestResponse.html
@@ -390,7 +390,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<!-- -->
</a>
<h3>Methods inherited from class javax.servlet.<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true" title="class or interface in javax.servlet">ServletResponseWrapper</a></h3>
-<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#getBufferSize--" title="class or interface in javax.servlet">getBufferSize</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#getCharacterEncoding--" title="class or interface in javax.servlet">getCharacterEncoding</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#getContentType--" title="class or interface in javax.servlet">getContentType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#getLocale--" title="class or interface in javax.servlet">getLocale</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#getResponse--" title="class or interface in javax.servlet">getResponse</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletR
esponseWrapper.html?is-external=true#isCommitted--" title="class or interface in javax.servlet">isCommitted</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#isWrapperFor-java.lang.Class-" title="class or interface in javax.servlet">isWrapperFor</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#isWrapperFor-javax.servlet.ServletResponse-" title="class or interface in javax.servlet">isWrapperFor</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#reset--" title="class or interface in javax.servlet">reset</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#resetBuffer--" title="class or interface in javax.servlet">resetBuffer</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setBufferSize-int-" titl
e="class or interface in javax.servlet">setBufferSize</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setCharacterEncoding-java.lang.String-" title="class or interface in javax.servlet">setCharacterEncoding</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setContentLength-int-" title="class or interface in javax.servlet">setContentLength</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setContentType-java.lang.String-" title="class or interface in javax.servlet">setContentType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setLocale-java.util.Locale-" title="class or interface in javax.servlet">setLocale</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setResponse-javax.servlet.Servlet
Response-" title="class or interface in javax.servlet">setResponse</a></code></li>
+<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#getBufferSize--" title="class or interface in javax.servlet">getBufferSize</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#getCharacterEncoding--" title="class or interface in javax.servlet">getCharacterEncoding</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#getContentType--" title="class or interface in javax.servlet">getContentType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#getLocale--" title="class or interface in javax.servlet">getLocale</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#getResponse--" title="class or interface in javax.servlet">getResponse</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletR
esponseWrapper.html?is-external=true#isCommitted--" title="class or interface in javax.servlet">isCommitted</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#isWrapperFor-java.lang.Class-" title="class or interface in javax.servlet">isWrapperFor</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#isWrapperFor-javax.servlet.ServletResponse-" title="class or interface in javax.servlet">isWrapperFor</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#reset--" title="class or interface in javax.servlet">reset</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#resetBuffer--" title="class or interface in javax.servlet">resetBuffer</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setBufferSize-int-" titl
e="class or interface in javax.servlet">setBufferSize</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setCharacterEncoding-java.lang.String-" title="class or interface in javax.servlet">setCharacterEncoding</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setContentLength-int-" title="class or interface in javax.servlet">setContentLength</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setContentLengthLong-long-" title="class or interface in javax.servlet">setContentLengthLong</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setContentType-java.lang.String-" title="class or interface in javax.servlet">setContentType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setLocale-java.util.Loc
ale-" title="class or interface in javax.servlet">setLocale</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponseWrapper.html?is-external=true#setResponse-javax.servlet.ServletResponse-" title="class or interface in javax.servlet">setResponse</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -404,7 +404,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<!-- -->
</a>
<h3>Methods inherited from interface javax.servlet.<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true" title="class or interface in javax.servlet">ServletResponse</a></h3>
-<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#getBufferSize--" title="class or interface in javax.servlet">getBufferSize</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#getCharacterEncoding--" title="class or interface in javax.servlet">getCharacterEncoding</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#getContentType--" title="class or interface in javax.servlet">getContentType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#getLocale--" title="class or interface in javax.servlet">getLocale</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#isCommitted--" title="class or interface in javax.servlet">isCommitted</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#reset
--" title="class or interface in javax.servlet">reset</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#resetBuffer--" title="class or interface in javax.servlet">resetBuffer</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#setBufferSize-int-" title="class or interface in javax.servlet">setBufferSize</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#setCharacterEncoding-java.lang.String-" title="class or interface in javax.servlet">setCharacterEncoding</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#setContentLength-int-" title="class or interface in javax.servlet">setContentLength</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#setContentType-java.lang.String-" title="class or interface in javax.servlet">setContentType</a
>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#setLocale-java.util.Locale-" title="class or interface in javax.servlet">setLocale</a></code></li>
+<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#getBufferSize--" title="class or interface in javax.servlet">getBufferSize</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#getCharacterEncoding--" title="class or interface in javax.servlet">getCharacterEncoding</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#getContentType--" title="class or interface in javax.servlet">getContentType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#getLocale--" title="class or interface in javax.servlet">getLocale</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#isCommitted--" title="class or interface in javax.servlet">isCommitted</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#reset
--" title="class or interface in javax.servlet">reset</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#resetBuffer--" title="class or interface in javax.servlet">resetBuffer</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#setBufferSize-int-" title="class or interface in javax.servlet">setBufferSize</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#setCharacterEncoding-java.lang.String-" title="class or interface in javax.servlet">setCharacterEncoding</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#setContentLength-int-" title="class or interface in javax.servlet">setContentLength</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#setContentLengthLong-long-" title="class or interface in javax.servlet">setContentLengthLong</a
>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#setContentType-java.lang.String-" title="class or interface in javax.servlet">setContentType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#setLocale-java.util.Locale-" title="class or interface in javax.servlet">setLocale</a></code></li>
</ul>
</li>
</ul>
@@ -635,7 +635,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getOutputStream</h4>
-<pre>public <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletOutputStream.html?is-external=true" title="class or interface in javax.servlet">ServletOutputStream</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.322">getOutputStream</a>()
+<pre>public <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletOutputStream.html?is-external=true" title="class or interface in javax.servlet">ServletOutputStream</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.330">getOutputStream</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>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -653,7 +653,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getOutputStreamCalled</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.333">getOutputStreamCalled</a>()</pre>
+<pre>public boolean <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.341">getOutputStreamCalled</a>()</pre>
<div class="block">Returns <jk>true</jk> if <a href="../../../../org/apache/juneau/rest/RestResponse.html#getOutputStream--"><code>getOutputStream()</code></a> has been called.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -667,7 +667,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getWriter</h4>
-<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html?is-external=true" title="class or interface in java.io">PrintWriter</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.345">getWriter</a>()
+<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html?is-external=true" title="class or interface in java.io">PrintWriter</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.353">getWriter</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">Returns the writer to the response body.
@@ -690,7 +690,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getDirectWriter</h4>
-<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html?is-external=true" title="class or interface in java.io">PrintWriter</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.360">getDirectWriter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> contentType)
+<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html?is-external=true" title="class or interface in java.io">PrintWriter</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.368">getDirectWriter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> contentType)
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 meant to be used when rendering directly to a browser with no buffering.
@@ -713,7 +713,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getNegotiatedWriter</h4>
-<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html?is-external=true" title="class or interface in java.io">PrintWriter</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.374">getNegotiatedWriter</a>()
+<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html?is-external=true" title="class or interface in java.io">PrintWriter</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.382">getNegotiatedWriter</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">Equivalent to <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html?is-external=true#getWriter--" title="class or interface in javax.servlet"><code>ServletResponse.getWriter()</code></a>, except wraps the output stream if an <a href="../../../../org/apache/juneau/encoders/Encoder.html" title="class in org.apache.juneau.encoders"><code>Encoder</code></a> was
found that matched the <code>Accept-Encoding</code> header and sets the <code>Content-Encoding</code>
@@ -732,7 +732,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getMediaType</h4>
-<pre>public <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/RestResponse.html#line.402">getMediaType</a>()</pre>
+<pre>public <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/RestResponse.html#line.410">getMediaType</a>()</pre>
<div class="block">Returns the <code>Content-Type</code> header stripped of the charset attribute if present.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -746,7 +746,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>sendRedirect</h4>
-<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.414">sendRedirect</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> uri)
+<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.422">sendRedirect</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> uri)
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">Redirects to the specified URI.
@@ -769,7 +769,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getUrlEncodingSerializer</h4>
-<pre>public <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/RestResponse.html#line.426">getUrlEncodingSerializer</a>()</pre>
+<pre>public <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/RestResponse.html#line.434">getUrlEncodingSerializer</a>()</pre>
<div class="block">Returns the URL-encoding serializer associated with this response.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -783,7 +783,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHeader</h4>
-<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.431">setHeader</a>(<a href="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 void <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.439">setHeader</a>(<a href="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/String.html?is-external=true" title="class or interface in java.lang">String</a> value)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -799,7 +799,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlHeader</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.471">setHtmlHeader</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 <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.479">setHtmlHeader</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>
<div class="block">Sets the HTML header section contents.
<p>
@@ -839,7 +839,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlLinks</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.508">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/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.516">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>
@@ -881,7 +881,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlNav</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.549">setHtmlNav</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 <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.557">setHtmlNav</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>
<div class="block">Sets the HTML nav section contents.
<p>
@@ -926,7 +926,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlAside</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.584">setHtmlAside</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 <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.592">setHtmlAside</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>
<div class="block">Sets the HTML aside section contents.
<p>
@@ -965,7 +965,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlFooter</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.619">setHtmlFooter</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 <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.627">setHtmlFooter</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>
<div class="block">Sets the HTML footer section contents.
<p>
@@ -1004,7 +1004,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlStyle</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.651">setHtmlStyle</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 <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.659">setHtmlStyle</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>
<div class="block">Sets the HTML CSS style section contents.
<p>
@@ -1040,7 +1040,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlStylesheet</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.687">setHtmlStylesheet</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 <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.695">setHtmlStylesheet</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>
<div class="block">Sets the CSS URL in the HTML CSS style section.
<p>
@@ -1080,7 +1080,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlScript</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.719">setHtmlScript</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 <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.727">setHtmlScript</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>
<div class="block">Sets the HTML script section contents.
<p>
@@ -1116,7 +1116,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlNoWrap</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.733">setHtmlNoWrap</a>(boolean value)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.741">setHtmlNoWrap</a>(boolean value)</pre>
<div class="block">Shorthand method for forcing the rendered HTML content to be no-wrap.
<p>
@@ -1135,7 +1135,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlNoResultsMessage</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.748">setHtmlNoResultsMessage</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 <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.756">setHtmlNoResultsMessage</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>
<div class="block">Specifies the text to display when serializing an empty array or collection.
<p>
@@ -1155,7 +1155,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlTemplate</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.766">setHtmlTemplate</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/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a>> value)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.774">setHtmlTemplate</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/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a>> value)</pre>
<div class="block">Specifies the template class to use for rendering the HTML page.
<p>
@@ -1178,7 +1178,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setHtmlTemplate</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.784">setHtmlTemplate</a>(<a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a> value)</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RestResponse.html" title="class in org.apache.juneau.rest">RestResponse</a> <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.792">setHtmlTemplate</a>(<a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" title="interface in org.apache.juneau.html">HtmlDocTemplate</a> value)</pre>
<div class="block">Specifies the template class to use for rendering the HTML page.
<p>
@@ -1201,7 +1201,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockListLast">
<li class="blockList">
<h4>flushBuffer</h4>
-<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.790">flushBuffer</a>()
+<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestResponse.html#line.798">flushBuffer</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>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/RestServlet.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestServlet.html b/content/site/apidocs/org/apache/juneau/rest/RestServlet.html
index 2ed2594..d553ac6 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestServlet.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestServlet.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};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -206,22 +206,16 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
</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/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-">init</a></span>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> config)</code>
-<div class="block">Resource initialization method.</div>
-</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/rest/RestServlet.html#init-org.apache.juneau.rest.RestContext-">init</a></span>(<a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a> context)</code>
<div class="block">Convenience method if you want to perform initialization on your resource after all configuration settings
have been made.</div>
</td>
</tr>
-<tr id="i8" class="altColor">
+<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestServlet.html#init-javax.servlet.ServletConfig-">init</a></span>(<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> servletConfig)</code> </td>
</tr>
-<tr id="i9" class="rowColor">
+<tr id="i8" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestServlet.html#log-java.util.logging.Level-java.lang.String-java.lang.Object...-">log</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html?is-external=true" title="class or interface in java.util.logging">Level</a> level,
<a href="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,
@@ -229,7 +223,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<div class="block">Convenience method for calling <code>getContext().getLogger().log(level, msg, args);</code></div>
</td>
</tr>
-<tr id="i10" class="altColor">
+<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestServlet.html#log-java.util.logging.Level-java.lang.Throwable-java.lang.String-java.lang.Object...-">log</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html?is-external=true" title="class or interface in java.util.logging">Level</a> level,
<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,
@@ -238,29 +232,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<div class="block">Convenience method for calling <code>getContext().getLogger().log(level, cause, msg, args);</code></div>
</td>
</tr>
-<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/rest/RestServlet.html#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</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">Callback method that gets invoked right after the REST Java method is invoked, but before the serializer is
- invoked.</div>
-</td>
-</tr>
-<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/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a></span>(<a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req)</code>
-<div class="block">Callback method that gets invoked right before the REST Java method is invoked.</div>
-</td>
-</tr>
-<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/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</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,
- long time)</code>
-<div class="block">Callback method for listening for successful completion of requests.</div>
-</td>
-</tr>
-<tr id="i14" class="altColor">
+<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></span>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> r1,
<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletResponse</a> r2)</code>
@@ -338,45 +310,13 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
</dl>
</li>
</ul>
-<a name="init-org.apache.juneau.rest.RestConfig-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>init</h4>
-<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.99">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">Resource initialization method.
-
- <p>
- Identical to <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true#init-javax.servlet.ServletConfig-" title="class or interface in javax.servlet"><code>Servlet.init(ServletConfig)</code></a> except the config object provides access to the external config
- file, configuration properties, and variable resolver defined for this resource.
-
- <p>
- Classes can also use <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#init--" title="class or interface in javax.servlet"><code>GenericServlet.init()</code></a> and <a href="../../../../org/apache/juneau/rest/RestServlet.html#getServletConfig--"><code>getServletConfig()</code></a> as well to perform
- initialization.
-
- <p>
- Note that if you override this method, you must first call <code><jk>super</jk>.init(servletConfig)</code>!
-
- <p>
- Resource classes that don't extend from <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> can add this method to their class to get access to
- the config object.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>config</code> - The servlet configuration.</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> - Any exception can be thrown to signal an initialization failure.</dd>
-</dl>
-</li>
-</ul>
<a name="init-org.apache.juneau.rest.RestContext-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
-<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.120">init</a>(<a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a> context)
+<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.107">init</a>(<a href="../../../../org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest">RestContext</a> context)
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">Convenience method if you want to perform initialization on your resource after all configuration settings
have been made.
@@ -400,7 +340,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>service</h4>
-<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.143">service</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> r1,
+<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.131">service</a>(<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a> r1,
<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletResponse</a> r2)
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>,
<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>
@@ -423,11 +363,11 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getContext</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/RestServlet.html#line.181">getContext</a>()</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/RestServlet.html#line.168">getContext</a>()</pre>
<div class="block">Returns the read-only context object that contains all the configuration information about this resource.
<p>
- This object is <jk>null</jk> during the call to <a href="../../../../org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-"><code>init(RestConfig)</code></a> but is populated by the time
+ This object is <jk>null</jk> during the call to <a href="../../../../org/apache/juneau/rest/RestServlet.html#init-javax.servlet.ServletConfig-"><code>init(ServletConfig)</code></a> but is populated by the time
<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#init--" title="class or interface in javax.servlet"><code>GenericServlet.init()</code></a> is called.
<p>
@@ -442,94 +382,13 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
</dl>
</li>
</ul>
-<a name="onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>onSuccess</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.202">onSuccess</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,
- long time)</pre>
-<div class="block">Callback method for listening for successful completion of requests.
-
- <p>
- Subclasses can override this method for gathering performance statistics.
-
- <p>
- The default implementation does nothing.
-
- <p>
- Resources that don't extend from <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> can implement an equivalent method by overriding the
- <a href="../../../../org/apache/juneau/rest/RestCallHandler.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-"><code>RestCallHandler.onSuccess(RestRequest, RestResponse, long)</code></a> method.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>req</code> - The HTTP request.</dd>
-<dd><code>res</code> - The HTTP response.</dd>
-<dd><code>time</code> - The time in milliseconds it took to process the request.</dd>
-</dl>
-</li>
-</ul>
-<a name="onPreCall-org.apache.juneau.rest.RestRequest-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>onPreCall</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.218">onPreCall</a>(<a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> req)
- throws <a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a></pre>
-<div class="block">Callback method that gets invoked right before the REST Java method is invoked.
-
- <p>
- Subclasses can override this method to override request headers or set request-duration properties before the
- Java method is invoked.
-
- <p>
- Resources that don't extend from <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> can implement an equivalent method by overriding the
- <a href="../../../../org/apache/juneau/rest/RestCallHandler.html#onPreCall-org.apache.juneau.rest.RestRequest-"><code>RestCallHandler.onPreCall(RestRequest)</code></a> method.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>req</code> - The HTTP servlet request object.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a></code> - If any error occurs.</dd>
-</dl>
-</li>
-</ul>
-<a name="onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>onPostCall</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.236">onPostCall</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="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a></pre>
-<div class="block">Callback method that gets invoked right after the REST Java method is invoked, but before the serializer is
- invoked.
-
- <p>
- Subclasses can override this method to override request and response headers, or set/override properties used by
- the serializer.
-
- <p>
- Resources that don't extend from <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> can implement an equivalent method by overriding the
- <a href="../../../../org/apache/juneau/rest/RestCallHandler.html#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-"><code>RestCallHandler.onPostCall(RestRequest,RestResponse)</code></a> method.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>req</code> - The HTTP servlet request object.</dd>
-<dd><code>res</code> - The HTTP servlet response object.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="../../../../org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a></code> - If any error occurs.</dd>
-</dl>
-</li>
-</ul>
<a name="log-java.util.logging.Level-java.lang.String-java.lang.Object...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>log</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.245">log</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html?is-external=true" title="class or interface in java.util.logging">Level</a> level,
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.179">log</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html?is-external=true" title="class or interface in java.util.logging">Level</a> level,
<a href="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">Convenience method for calling <code>getContext().getLogger().log(level, msg, args);</code></div>
@@ -547,7 +406,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>log</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.258">log</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html?is-external=true" title="class or interface in java.util.logging">Level</a> level,
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.192">log</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html?is-external=true" title="class or interface in java.util.logging">Level</a> level,
<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,
<a href="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>
@@ -567,7 +426,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getServletConfig</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/RestServlet.html#line.270">getServletConfig</a>()</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/RestServlet.html#line.204">getServletConfig</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true#getServletConfig--" title="class or interface in javax.servlet">getServletConfig</a></code> in interface <code><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></dd>
@@ -582,7 +441,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>destroy</h4>
-<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.275">destroy</a>()</pre>
+<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestServlet.html#line.209">destroy</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true#destroy--" title="class or interface in javax.servlet">destroy</a></code> in interface <code><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></dd>
@@ -597,7 +456,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<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/RestServlet.html#line.287">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/RestServlet.html#line.221">getMessages</a>()</pre>
<div class="block">Convenience method for calling <code>getContext().getMessages();</code></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -613,7 +472,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<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/RestServlet.html#line.297">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/RestServlet.html#line.231">getProperties</a>()</pre>
<div class="block">Convenience method for calling <code>getContext().getProperties();</code></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -629,7 +488,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockListLast">
<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/RestServlet.html#line.307">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/RestServlet.html#line.241">getBeanContext</a>()</pre>
<div class="block">Convenience method for calling <code>getContext().getBeanContext();</code></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 309aa26..abe9d5c 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestServletDefault.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestServletDefault.html
@@ -322,7 +322,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="cla
<!-- -->
</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.RestConfig-">init</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-jav
a.lang.String-java.lang.Object...-">log</a>, <a href="../../../../org/apache/juneau/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#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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/juneau/rest/RestServlet.html#log-ja
va.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">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/RestServletGroupDefault.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestServletGroupDefault.html b/content/site/apidocs/org/apache/juneau/rest/RestServletGroupDefault.html
index f3f5136..df6932b 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestServletGroupDefault.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestServletGroupDefault.html
@@ -205,7 +205,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletDefault.html" tit
<!-- -->
</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.RestConfig-">init</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-jav
a.lang.String-java.lang.Object...-">log</a>, <a href="../../../../org/apache/juneau/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#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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/juneau/rest/RestServlet.html#log-ja
va.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">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/annotation/Header.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/annotation/Header.html b/content/site/apidocs/org/apache/juneau/rest/annotation/Header.html
index 95bd6df..3f4c97d 100644
--- a/content/site/apidocs/org/apache/juneau/rest/annotation/Header.html
+++ b/content/site/apidocs/org/apache/juneau/rest/annotation/Header.html
@@ -43,7 +43,7 @@
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/juneau/rest/annotation/HasQuery.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/juneau/rest/annotation/Header.html" target="_top">Frames</a></li>
@@ -247,7 +247,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/rest/annota
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/juneau/rest/annotation/HasQuery.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/juneau/rest/annotation/HtmlDoc.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/juneau/rest/annotation/Header.html" target="_top">Frames</a></li>
[04/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/rest/RestRequest.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RestRequest.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RestRequest.html
index 107410f..878cd28 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RestRequest.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RestRequest.html
@@ -133,1080 +133,1083 @@
<span class="sourceLineNo">125</span><a name="line.125"></a>
<span class="sourceLineNo">126</span> method = _method;<a name="line.126"></a>
<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span> stylesheet = getQuery().getString("stylesheet");<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span> headers = new RequestHeaders();<a name="line.130"></a>
-<span class="sourceLineNo">131</span> for (Enumeration<String> e = getHeaderNames(); e.hasMoreElements();) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span> String name = e.nextElement();<a name="line.132"></a>
-<span class="sourceLineNo">133</span> headers.put(name, super.getHeaders(name));<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> body = new RequestBody(this);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span> if (context.isAllowBodyParam()) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span> String b = getQuery().getString("body");<a name="line.139"></a>
-<span class="sourceLineNo">140</span> if (b != null) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span> headers.put("Content-Type", UonSerializer.DEFAULT.getResponseContentType());<a name="line.141"></a>
-<span class="sourceLineNo">142</span> body.load(b.getBytes(UTF8));<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> if (context.isAllowHeaderParams())<a name="line.146"></a>
-<span class="sourceLineNo">147</span> headers.setQueryParams(queryParams);<a name="line.147"></a>
+<span class="sourceLineNo">128</span> String _stylesheet = getQuery().getString("stylesheet");<a name="line.128"></a>
+<span class="sourceLineNo">129</span> if (_stylesheet != null)<a name="line.129"></a>
+<span class="sourceLineNo">130</span> req.getSession().setAttribute("stylesheet", _stylesheet);<a name="line.130"></a>
+<span class="sourceLineNo">131</span> stylesheet = (String)req.getSession().getAttribute("stylesheet");<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span> headers = new RequestHeaders();<a name="line.133"></a>
+<span class="sourceLineNo">134</span> for (Enumeration<String> e = getHeaderNames(); e.hasMoreElements();) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span> String name = e.nextElement();<a name="line.135"></a>
+<span class="sourceLineNo">136</span> headers.put(name, super.getHeaders(name));<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> body = new RequestBody(this);<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span> if (context.isAllowBodyParam()) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span> String b = getQuery().getString("body");<a name="line.142"></a>
+<span class="sourceLineNo">143</span> if (b != null) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span> headers.put("Content-Type", UonSerializer.DEFAULT.getResponseContentType());<a name="line.144"></a>
+<span class="sourceLineNo">145</span> body.load(b.getBytes(UTF8));<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> debug = "true".equals(getQuery().getString("debug", "false")) || "true".equals(getHeaders().getString("Debug", "false"));<a name="line.149"></a>
-<span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span> this.pathParams = new RequestPathMatch();<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span> } catch (RestException e) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span> throw e;<a name="line.154"></a>
-<span class="sourceLineNo">155</span> } catch (Exception e) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span> throw new ServletException(e);<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> /*<a name="line.160"></a>
-<span class="sourceLineNo">161</span> * Called from RestServlet after a match has been made but before the guard or method invocation.<a name="line.161"></a>
-<span class="sourceLineNo">162</span> */<a name="line.162"></a>
-<span class="sourceLineNo">163</span> @SuppressWarnings("hiding")<a name="line.163"></a>
-<span class="sourceLineNo">164</span> final void init(Method javaMethod, ObjectMap properties, Map<String,String> defHeader,<a name="line.164"></a>
-<span class="sourceLineNo">165</span> Map<String,String> defQuery, Map<String,String> defFormData, String defaultCharset,<a name="line.165"></a>
-<span class="sourceLineNo">166</span> SerializerGroup mSerializers, ParserGroup mParsers, UrlEncodingParser mUrlEncodingParser,<a name="line.166"></a>
-<span class="sourceLineNo">167</span> BeanContext beanContext, EncoderGroup encoders, Map<String,Widget> widgets) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span> this.javaMethod = javaMethod;<a name="line.168"></a>
-<span class="sourceLineNo">169</span> this.properties = properties;<a name="line.169"></a>
-<span class="sourceLineNo">170</span> this.urlEncodingParser = mUrlEncodingParser;<a name="line.170"></a>
-<span class="sourceLineNo">171</span> this.beanSession = beanContext.createSession();<a name="line.171"></a>
-<span class="sourceLineNo">172</span> this.pathParams<a name="line.172"></a>
-<span class="sourceLineNo">173</span> .setParser(urlEncodingParser)<a name="line.173"></a>
-<span class="sourceLineNo">174</span> .setBeanSession(beanSession);<a name="line.174"></a>
-<span class="sourceLineNo">175</span> this.queryParams<a name="line.175"></a>
-<span class="sourceLineNo">176</span> .addDefault(defQuery)<a name="line.176"></a>
-<span class="sourceLineNo">177</span> .setParser(urlEncodingParser)<a name="line.177"></a>
-<span class="sourceLineNo">178</span> .setBeanSession(beanSession);<a name="line.178"></a>
-<span class="sourceLineNo">179</span> this.headers<a name="line.179"></a>
-<span class="sourceLineNo">180</span> .addDefault(defHeader)<a name="line.180"></a>
-<span class="sourceLineNo">181</span> .addDefault(context.getDefaultRequestHeaders())<a name="line.181"></a>
-<span class="sourceLineNo">182</span> .setParser(urlEncodingParser)<a name="line.182"></a>
-<span class="sourceLineNo">183</span> .setBeanSession(beanSession);<a name="line.183"></a>
-<span class="sourceLineNo">184</span> this.body<a name="line.184"></a>
-<span class="sourceLineNo">185</span> .setEncoders(encoders)<a name="line.185"></a>
-<span class="sourceLineNo">186</span> .setParsers(mParsers)<a name="line.186"></a>
-<span class="sourceLineNo">187</span> .setHeaders(headers)<a name="line.187"></a>
-<span class="sourceLineNo">188</span> .setBeanSession(beanSession)<a name="line.188"></a>
-<span class="sourceLineNo">189</span> .setUrlEncodingParser(mUrlEncodingParser);<a name="line.189"></a>
-<span class="sourceLineNo">190</span> this.serializerGroup = mSerializers;<a name="line.190"></a>
-<span class="sourceLineNo">191</span> this.parserGroup = mParsers;<a name="line.191"></a>
-<span class="sourceLineNo">192</span> this.defaultCharset = defaultCharset;<a name="line.192"></a>
-<span class="sourceLineNo">193</span> this.defFormData = defFormData;<a name="line.193"></a>
-<span class="sourceLineNo">194</span> this.widgets = widgets;<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span> if (debug) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span> String msg = ""<a name="line.197"></a>
-<span class="sourceLineNo">198</span> + "\n=== HTTP Request (incoming) ===================================================="<a name="line.198"></a>
-<span class="sourceLineNo">199</span> + toString()<a name="line.199"></a>
-<span class="sourceLineNo">200</span> + "\n=== END ========================================================================";<a name="line.200"></a>
-<span class="sourceLineNo">201</span> context.getLogger().log(Level.WARNING, msg);<a name="line.201"></a>
-<span class="sourceLineNo">202</span> }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span> if (isPlainText())<a name="line.204"></a>
-<span class="sourceLineNo">205</span> this.properties.put(SerializerContext.SERIALIZER_useWhitespace, true);<a name="line.205"></a>
-<span class="sourceLineNo">206</span> }<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span> /**<a name="line.208"></a>
-<span class="sourceLineNo">209</span> * Returns a string of the form <js>"HTTP method-name full-url"</js><a name="line.209"></a>
-<span class="sourceLineNo">210</span> *<a name="line.210"></a>
-<span class="sourceLineNo">211</span> * @return A description of the request.<a name="line.211"></a>
-<span class="sourceLineNo">212</span> */<a name="line.212"></a>
-<span class="sourceLineNo">213</span> public String getDescription() {<a name="line.213"></a>
-<span class="sourceLineNo">214</span> String qs = getQueryString();<a name="line.214"></a>
-<span class="sourceLineNo">215</span> return "HTTP " + getMethod() + " " + getRequestURI() + (qs == null ? "" : "?" + qs);<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> /**<a name="line.218"></a>
-<span class="sourceLineNo">219</span> * Same as {@link #getAttribute(String)} but returns a default value if not found.<a name="line.219"></a>
-<span class="sourceLineNo">220</span> *<a name="line.220"></a>
-<span class="sourceLineNo">221</span> * @param name The request attribute name.<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * @param def The default value if the attribute doesn't exist.<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * @return The request attribute value.<a name="line.223"></a>
-<span class="sourceLineNo">224</span> */<a name="line.224"></a>
-<span class="sourceLineNo">225</span> public Object getAttribute(String name, Object def) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span> Object o = super.getAttribute(name);<a name="line.226"></a>
-<span class="sourceLineNo">227</span> return (o == null ? def : o);<a name="line.227"></a>
-<span class="sourceLineNo">228</span> }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span> /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * Shorthand method for calling {@link #setAttribute(String, Object)} fluently.<a name="line.231"></a>
-<span class="sourceLineNo">232</span> *<a name="line.232"></a>
-<span class="sourceLineNo">233</span> * @param name The request attribute name.<a name="line.233"></a>
-<span class="sourceLineNo">234</span> * @param value The request attribute value.<a name="line.234"></a>
-<span class="sourceLineNo">235</span> * @return This object (for method chaining).<a name="line.235"></a>
-<span class="sourceLineNo">236</span> */<a name="line.236"></a>
-<span class="sourceLineNo">237</span> public RestRequest attr(String name, Object value) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span> setAttribute(name, value);<a name="line.238"></a>
-<span class="sourceLineNo">239</span> return this;<a name="line.239"></a>
-<span class="sourceLineNo">240</span> }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span> /**<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * Resolves the specified property.<a name="line.244"></a>
-<span class="sourceLineNo">245</span> *<a name="line.245"></a>
-<span class="sourceLineNo">246</span> * @param cm<a name="line.246"></a>
-<span class="sourceLineNo">247</span> * The <code>CallMethod</code> object where the <code>HtmlDocSerializer</code> settings are defined.<a name="line.247"></a>
-<span class="sourceLineNo">248</span> * Optional value. If not specified, then won't resolve <code>HtmlDocSerializer</code> properties.<a name="line.248"></a>
-<span class="sourceLineNo">249</span> * @param category<a name="line.249"></a>
-<span class="sourceLineNo">250</span> * The property category.<a name="line.250"></a>
-<span class="sourceLineNo">251</span> * The possible values are:<a name="line.251"></a>
-<span class="sourceLineNo">252</span> * <ul><a name="line.252"></a>
-<span class="sourceLineNo">253</span> * <li><a name="line.253"></a>
-<span class="sourceLineNo">254</span> * <js>"Attribute"</js> - Value returned by {@link HttpServletRequest#getAttribute(String)}.<a name="line.254"></a>
-<span class="sourceLineNo">255</span> * <li><a name="line.255"></a>
-<span class="sourceLineNo">256</span> * <js>"FormData"</js> - Value returned by {@link RestRequest#getFormData(String)}.<a name="line.256"></a>
-<span class="sourceLineNo">257</span> * <li><a name="line.257"></a>
-<span class="sourceLineNo">258</span> * <js>"Header"</js> - Value returned by {@link RestRequest#getHeader(String)}.<a name="line.258"></a>
-<span class="sourceLineNo">259</span> * <li><a name="line.259"></a>
-<span class="sourceLineNo">260</span> * <js>"HtmlDocSerializer"</js><a name="line.260"></a>
-<span class="sourceLineNo">261</span> * <br>Valid names:<a name="line.261"></a>
-<span class="sourceLineNo">262</span> * <ul><a name="line.262"></a>
-<span class="sourceLineNo">263</span> * <li><js>"aside"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_aside}<a name="line.263"></a>
-<span class="sourceLineNo">264</span> * <li><js>"footer"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_footer}<a name="line.264"></a>
-<span class="sourceLineNo">265</span> * <li><js>"header"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_header}<a name="line.265"></a>
-<span class="sourceLineNo">266</span> * <li><js>"links.list"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_links}<a name="line.266"></a>
-<span class="sourceLineNo">267</span> * <li><js>"nav"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_nav}<a name="line.267"></a>
-<span class="sourceLineNo">268</span> * <li><js>"noResultsMessage"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_noResultsMessage}<a name="line.268"></a>
-<span class="sourceLineNo">269</span> * <li><js>"nowrap"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_nowrap}<a name="line.269"></a>
-<span class="sourceLineNo">270</span> * <li><js>"script.list"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_script}<a name="line.270"></a>
-<span class="sourceLineNo">271</span> * <li><js>"style.list"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_style}<a name="line.271"></a>
-<span class="sourceLineNo">272</span> * <li><js>"stylesheet"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_stylesheet}<a name="line.272"></a>
-<span class="sourceLineNo">273</span> * <li><js>"template"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_template}<a name="line.273"></a>
-<span class="sourceLineNo">274</span> * </ul><a name="line.274"></a>
-<span class="sourceLineNo">275</span> * <li><a name="line.275"></a>
-<span class="sourceLineNo">276</span> * <js>"Path"</js> - Value returned by {@link RestRequest#getPath(String)}.<a name="line.276"></a>
-<span class="sourceLineNo">277</span> * <li><a name="line.277"></a>
-<span class="sourceLineNo">278</span> * <js>"Query"</js> = Value returned by {@link RestRequest#getQuery(String)}.<a name="line.278"></a>
-<span class="sourceLineNo">279</span> * <li><a name="line.279"></a>
-<span class="sourceLineNo">280</span> * <js>"Request"</js><a name="line.280"></a>
-<span class="sourceLineNo">281</span> * <br>Valid names:<a name="line.281"></a>
-<span class="sourceLineNo">282</span> * <ul><a name="line.282"></a>
-<span class="sourceLineNo">283</span> * <li><js>"contextPath"</js> - Value returned by {@link RestRequest#getContextPath()}<a name="line.283"></a>
-<span class="sourceLineNo">284</span> * <li><js>"method"</js> - Value returned by {@link RestRequest#getMethod()}<a name="line.284"></a>
-<span class="sourceLineNo">285</span> * <li><js>"methodDescription"</js> - Value returned by {@link RestRequest#getMethodDescription()}<a name="line.285"></a>
-<span class="sourceLineNo">286</span> * <li><js>"methodSummary"</js> - Value returned by {@link RestRequest#getMethodSummary()}<a name="line.286"></a>
-<span class="sourceLineNo">287</span> * <li><js>"pathInfo"</js> - Value returned by {@link RestRequest#getPathInfo()}<a name="line.287"></a>
-<span class="sourceLineNo">288</span> * <li><js>"requestParentURI"</js> - Value returned by {@link UriContext#getRootRelativePathInfoParent()}<a name="line.288"></a>
-<span class="sourceLineNo">289</span> * <li><js>"requestURI"</js> - Value returned by {@link RestRequest#getRequestURI()}<a name="line.289"></a>
-<span class="sourceLineNo">290</span> * <li><js>"servletClass"</js> - The class name of the servlet<a name="line.290"></a>
-<span class="sourceLineNo">291</span> * <li><js>"servletClassSimple"</js> - The simple class name of the servlet.<a name="line.291"></a>
-<span class="sourceLineNo">292</span> * <li><js>"servletDescription"</js> - Value returned by {@link RestRequest#getServletDescription()}<a name="line.292"></a>
-<span class="sourceLineNo">293</span> * <li><js>"servletParentURI"</js> - Value returned by {@link UriContext#getRootRelativeServletPathParent()}<a name="line.293"></a>
-<span class="sourceLineNo">294</span> * <li><js>"servletPath"</js> - See {@link RestRequest#getServletPath()}<a name="line.294"></a>
-<span class="sourceLineNo">295</span> * <li><js>"servletTitle"</js> - See {@link RestRequest#getServletTitle()}<a name="line.295"></a>
-<span class="sourceLineNo">296</span> * <li><js>"servletURI"</js> - See {@link UriContext#getRootRelativeServletPath()}<a name="line.296"></a>
-<span class="sourceLineNo">297</span> * <li><js>"siteName"</js> - See {@link RestRequest#getSiteName()}<a name="line.297"></a>
-<span class="sourceLineNo">298</span> * </ul><a name="line.298"></a>
-<span class="sourceLineNo">299</span> * </ul><a name="line.299"></a>
-<span class="sourceLineNo">300</span> * @param name The property name.<a name="line.300"></a>
-<span class="sourceLineNo">301</span> * @return The resolve property, or <jk>null</jk> if it wasn't found.<a name="line.301"></a>
-<span class="sourceLineNo">302</span> */<a name="line.302"></a>
-<span class="sourceLineNo">303</span> public Object resolveProperty(CallMethod cm, String category, String name) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span> char c = category.charAt(0);<a name="line.304"></a>
-<span class="sourceLineNo">305</span> if (c == 'A') {<a name="line.305"></a>
-<span class="sourceLineNo">306</span> if ("Attribute".equals(category))<a name="line.306"></a>
-<span class="sourceLineNo">307</span> return getAttribute(name);<a name="line.307"></a>
-<span class="sourceLineNo">308</span> } else if (c == 'F') {<a name="line.308"></a>
-<span class="sourceLineNo">309</span> if ("FormData".equals(category))<a name="line.309"></a>
-<span class="sourceLineNo">310</span> return getFormData(name);<a name="line.310"></a>
-<span class="sourceLineNo">311</span> } else if (c == 'H') {<a name="line.311"></a>
-<span class="sourceLineNo">312</span> if ("Header".equals(category))<a name="line.312"></a>
-<span class="sourceLineNo">313</span> return getHeader(name);<a name="line.313"></a>
-<span class="sourceLineNo">314</span> if ("HtmlDocSerializer".equals(category) && cm != null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span> char c2 = StringUtils.charAt(name, 0);<a name="line.315"></a>
-<span class="sourceLineNo">316</span> if (c2 == 'a') {<a name="line.316"></a>
-<span class="sourceLineNo">317</span> if ("aside".equals(name))<a name="line.317"></a>
-<span class="sourceLineNo">318</span> return cm.htmlAside == null ? null : resolveVars(cm.htmlAside);<a name="line.318"></a>
-<span class="sourceLineNo">319</span> } else if (c2 == 'f') {<a name="line.319"></a>
-<span class="sourceLineNo">320</span> if ("footer".equals(name))<a name="line.320"></a>
-<span class="sourceLineNo">321</span> return cm.htmlFooter == null ? null : resolveVars(cm.htmlFooter);<a name="line.321"></a>
-<span class="sourceLineNo">322</span> } else if (c2 == 'h') {<a name="line.322"></a>
-<span class="sourceLineNo">323</span> if ("header".equals(name))<a name="line.323"></a>
-<span class="sourceLineNo">324</span> return cm.htmlHeader == null ? null : resolveVars(cm.htmlHeader);<a name="line.324"></a>
-<span class="sourceLineNo">325</span> } else if (c2 == 'l') {<a name="line.325"></a>
-<span class="sourceLineNo">326</span> if ("links.list".equals(name)) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span> if (cm.htmlLinks == null || cm.htmlLinks.length == 0)<a name="line.327"></a>
-<span class="sourceLineNo">328</span> return null;<a name="line.328"></a>
-<span class="sourceLineNo">329</span> try {<a name="line.329"></a>
-<span class="sourceLineNo">330</span> List<String> la = new ArrayList<String>();<a name="line.330"></a>
-<span class="sourceLineNo">331</span> for (String l : cm.htmlLinks) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span> // Temporary backwards compatibility with JSON object format.<a name="line.332"></a>
-<span class="sourceLineNo">333</span> if (l.startsWith("{")) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span> ObjectMap m = new ObjectMap(l);<a name="line.334"></a>
-<span class="sourceLineNo">335</span> for (Map.Entry<String,Object> e : m.entrySet())<a name="line.335"></a>
-<span class="sourceLineNo">336</span> la.add(resolveVars(e.getKey()) + ":" + resolveVars(StringUtils.toString(e.getValue())));<a name="line.336"></a>
-<span class="sourceLineNo">337</span> } else {<a name="line.337"></a>
-<span class="sourceLineNo">338</span> la.add(resolveVars(l));<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> return la;<a name="line.341"></a>
-<span class="sourceLineNo">342</span> } catch (ParseException e) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span> throw new RuntimeException(e);<a name="line.343"></a>
-<span class="sourceLineNo">344</span> }<a name="line.344"></a>
-<span class="sourceLineNo">345</span> }<a name="line.345"></a>
-<span class="sourceLineNo">346</span> } else if (c2 == 'n') {<a name="line.346"></a>
-<span class="sourceLineNo">347</span> if ("nav".equals(name))<a name="line.347"></a>
-<span class="sourceLineNo">348</span> return cm.htmlNav == null ? null : resolveVars(cm.htmlNav);<a name="line.348"></a>
-<span class="sourceLineNo">349</span> if ("noResultsMessage".equals(name))<a name="line.349"></a>
-<span class="sourceLineNo">350</span> return cm.htmlNoResultsMessage == null ? null : resolveVars(cm.htmlNoResultsMessage);<a name="line.350"></a>
-<span class="sourceLineNo">351</span> if ("nowrap".equals(name))<a name="line.351"></a>
-<span class="sourceLineNo">352</span> return cm.htmlNoWrap;<a name="line.352"></a>
-<span class="sourceLineNo">353</span> } else if (c2 == 's') {<a name="line.353"></a>
-<span class="sourceLineNo">354</span> if ("script.list".equals(name)) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span> Set<String> l = new LinkedHashSet<String>();<a name="line.355"></a>
-<span class="sourceLineNo">356</span> if (cm.htmlScript != null)<a name="line.356"></a>
-<span class="sourceLineNo">357</span> l.add(resolveVars(cm.htmlScript));<a name="line.357"></a>
-<span class="sourceLineNo">358</span> for (Widget w : getWidgets().values()) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span> String script;<a name="line.359"></a>
-<span class="sourceLineNo">360</span> try {<a name="line.360"></a>
-<span class="sourceLineNo">361</span> script = w.getScript(this);<a name="line.361"></a>
-<span class="sourceLineNo">362</span> } catch (Exception e) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span> script = e.getLocalizedMessage();<a name="line.363"></a>
-<span class="sourceLineNo">364</span> }<a name="line.364"></a>
-<span class="sourceLineNo">365</span> if (script != null)<a name="line.365"></a>
-<span class="sourceLineNo">366</span> l.add(resolveVars(script));<a name="line.366"></a>
-<span class="sourceLineNo">367</span> }<a name="line.367"></a>
-<span class="sourceLineNo">368</span> return l;<a name="line.368"></a>
-<span class="sourceLineNo">369</span> }<a name="line.369"></a>
-<span class="sourceLineNo">370</span> if ("style.list".equals(name)) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span> Set<String> l = new LinkedHashSet<String>();<a name="line.371"></a>
-<span class="sourceLineNo">372</span> if (cm.htmlStyle != null)<a name="line.372"></a>
-<span class="sourceLineNo">373</span> l.add(resolveVars(cm.htmlStyle));<a name="line.373"></a>
-<span class="sourceLineNo">374</span> for (Widget w : getWidgets().values()) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span> String style;<a name="line.375"></a>
-<span class="sourceLineNo">376</span> try {<a name="line.376"></a>
-<span class="sourceLineNo">377</span> style = w.getStyle(this);<a name="line.377"></a>
-<span class="sourceLineNo">378</span> } catch (Exception e) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span> style = e.getLocalizedMessage();<a name="line.379"></a>
-<span class="sourceLineNo">380</span> }<a name="line.380"></a>
-<span class="sourceLineNo">381</span> if (style != null)<a name="line.381"></a>
-<span class="sourceLineNo">382</span> l.add(resolveVars(style));<a name="line.382"></a>
-<span class="sourceLineNo">383</span> }<a name="line.383"></a>
-<span class="sourceLineNo">384</span> return l;<a name="line.384"></a>
-<span class="sourceLineNo">385</span> }<a name="line.385"></a>
-<span class="sourceLineNo">386</span> if ("stylesheet".equals(name)) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span> String s = getStylesheet();<a name="line.387"></a>
-<span class="sourceLineNo">388</span> // Exclude absolute URIs to stylesheets for security reasons.<a name="line.388"></a>
-<span class="sourceLineNo">389</span> if (s == null || isAbsoluteUri(s))<a name="line.389"></a>
-<span class="sourceLineNo">390</span> s = cm.htmlStylesheet;<a name="line.390"></a>
-<span class="sourceLineNo">391</span> return s == null ? null : resolveVars(s);<a name="line.391"></a>
-<span class="sourceLineNo">392</span> }<a name="line.392"></a>
-<span class="sourceLineNo">393</span> } else if (c2 == 't') {<a name="line.393"></a>
-<span class="sourceLineNo">394</span> if ("template".equals(name))<a name="line.394"></a>
-<span class="sourceLineNo">395</span> return cm.htmlTemplate;<a name="line.395"></a>
-<span class="sourceLineNo">396</span> }<a name="line.396"></a>
-<span class="sourceLineNo">397</span> }<a name="line.397"></a>
-<span class="sourceLineNo">398</span> } else if (c == 'P') {<a name="line.398"></a>
-<span class="sourceLineNo">399</span> if ("Path".equals(category))<a name="line.399"></a>
-<span class="sourceLineNo">400</span> return getPath(name);<a name="line.400"></a>
-<span class="sourceLineNo">401</span> } else if (c == 'Q') {<a name="line.401"></a>
-<span class="sourceLineNo">402</span> if ("Query".equals(category))<a name="line.402"></a>
-<span class="sourceLineNo">403</span> return getQuery(name);<a name="line.403"></a>
-<span class="sourceLineNo">404</span> } else if (c == 'R') {<a name="line.404"></a>
-<span class="sourceLineNo">405</span> if ("Request".equals(category)) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span> char c2 = StringUtils.charAt(name, 0);<a name="line.406"></a>
-<span class="sourceLineNo">407</span> if (c == 'c') {<a name="line.407"></a>
-<span class="sourceLineNo">408</span> if ("contextPath".equals(name))<a name="line.408"></a>
-<span class="sourceLineNo">409</span> return getContextPath();<a name="line.409"></a>
-<span class="sourceLineNo">410</span> } else if (c2 == 'm') {<a name="line.410"></a>
-<span class="sourceLineNo">411</span> if ("method".equals(name))<a name="line.411"></a>
-<span class="sourceLineNo">412</span> return getMethod();<a name="line.412"></a>
-<span class="sourceLineNo">413</span> if ("methodDescription".equals(name))<a name="line.413"></a>
-<span class="sourceLineNo">414</span> return getMethodDescription();<a name="line.414"></a>
-<span class="sourceLineNo">415</span> if ("methodSummary".equals(name))<a name="line.415"></a>
-<span class="sourceLineNo">416</span> return getMethodSummary();<a name="line.416"></a>
-<span class="sourceLineNo">417</span> } else if (c2 == 'p') {<a name="line.417"></a>
-<span class="sourceLineNo">418</span> if ("pathInfo".equals(name))<a name="line.418"></a>
-<span class="sourceLineNo">419</span> return getPathInfo();<a name="line.419"></a>
-<span class="sourceLineNo">420</span> } else if (c2 == 'r') {<a name="line.420"></a>
-<span class="sourceLineNo">421</span> if ("requestParentURI".equals(name))<a name="line.421"></a>
-<span class="sourceLineNo">422</span> return getUriContext().getRootRelativePathInfoParent();<a name="line.422"></a>
-<span class="sourceLineNo">423</span> if ("requestURI".equals(name))<a name="line.423"></a>
-<span class="sourceLineNo">424</span> return getRequestURI();<a name="line.424"></a>
-<span class="sourceLineNo">425</span> } else if (c2 == 's') {<a name="line.425"></a>
-<span class="sourceLineNo">426</span> if ("servletClass".equals(name))<a name="line.426"></a>
-<span class="sourceLineNo">427</span> return getContext().getResource().getClass().getName();<a name="line.427"></a>
-<span class="sourceLineNo">428</span> if ("servletClassSimple".equals(name))<a name="line.428"></a>
-<span class="sourceLineNo">429</span> return getContext().getResource().getClass().getSimpleName();<a name="line.429"></a>
-<span class="sourceLineNo">430</span> if ("servletDescription".equals(name))<a name="line.430"></a>
-<span class="sourceLineNo">431</span> return getServletDescription();<a name="line.431"></a>
-<span class="sourceLineNo">432</span> if ("servletParentURI".equals(name))<a name="line.432"></a>
-<span class="sourceLineNo">433</span> return getUriContext().getRootRelativeServletPathParent();<a name="line.433"></a>
-<span class="sourceLineNo">434</span> if ("servletPath".equals(name))<a name="line.434"></a>
-<span class="sourceLineNo">435</span> return getServletPath();<a name="line.435"></a>
-<span class="sourceLineNo">436</span> if ("servletTitle".equals(name))<a name="line.436"></a>
-<span class="sourceLineNo">437</span> return getServletTitle();<a name="line.437"></a>
-<span class="sourceLineNo">438</span> if ("servletURI".equals(name))<a name="line.438"></a>
-<span class="sourceLineNo">439</span> return getUriContext().getRootRelativeServletPath();<a name="line.439"></a>
-<span class="sourceLineNo">440</span> if ("siteName".equals(name))<a name="line.440"></a>
-<span class="sourceLineNo">441</span> return getSiteName();<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> return null;<a name="line.445"></a>
-<span class="sourceLineNo">446</span> }<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> // Properties<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> /**<a name="line.452"></a>
-<span class="sourceLineNo">453</span> * Servlet calls this method to initialize the properties.<a name="line.453"></a>
-<span class="sourceLineNo">454</span> */<a name="line.454"></a>
-<span class="sourceLineNo">455</span> RestRequest setProperties(ObjectMap properties) {<a name="line.455"></a>
-<span class="sourceLineNo">456</span> this.properties = properties;<a name="line.456"></a>
-<span class="sourceLineNo">457</span> return this;<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> /**<a name="line.460"></a>
-<span class="sourceLineNo">461</span> * Retrieve the properties active for this request.<a name="line.461"></a>
-<span class="sourceLineNo">462</span> *<a name="line.462"></a>
-<span class="sourceLineNo">463</span> * <p><a name="line.463"></a>
-<span class="sourceLineNo">464</span> * These properties can be modified by the request.<a name="line.464"></a>
+<span class="sourceLineNo">149</span> if (context.isAllowHeaderParams())<a name="line.149"></a>
+<span class="sourceLineNo">150</span> headers.setQueryParams(queryParams);<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span> debug = "true".equals(getQuery().getString("debug", "false")) || "true".equals(getHeaders().getString("Debug", "false"));<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span> this.pathParams = new RequestPathMatch();<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span> } catch (RestException e) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span> throw e;<a name="line.157"></a>
+<span class="sourceLineNo">158</span> } catch (Exception e) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span> throw new ServletException(e);<a name="line.159"></a>
+<span class="sourceLineNo">160</span> }<a name="line.160"></a>
+<span class="sourceLineNo">161</span> }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span> /*<a name="line.163"></a>
+<span class="sourceLineNo">164</span> * Called from RestServlet after a match has been made but before the guard or method invocation.<a name="line.164"></a>
+<span class="sourceLineNo">165</span> */<a name="line.165"></a>
+<span class="sourceLineNo">166</span> @SuppressWarnings("hiding")<a name="line.166"></a>
+<span class="sourceLineNo">167</span> final void init(Method javaMethod, ObjectMap properties, Map<String,String> defHeader,<a name="line.167"></a>
+<span class="sourceLineNo">168</span> Map<String,String> defQuery, Map<String,String> defFormData, String defaultCharset,<a name="line.168"></a>
+<span class="sourceLineNo">169</span> SerializerGroup mSerializers, ParserGroup mParsers, UrlEncodingParser mUrlEncodingParser,<a name="line.169"></a>
+<span class="sourceLineNo">170</span> BeanContext beanContext, EncoderGroup encoders, Map<String,Widget> widgets) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span> this.javaMethod = javaMethod;<a name="line.171"></a>
+<span class="sourceLineNo">172</span> this.properties = properties;<a name="line.172"></a>
+<span class="sourceLineNo">173</span> this.urlEncodingParser = mUrlEncodingParser;<a name="line.173"></a>
+<span class="sourceLineNo">174</span> this.beanSession = beanContext.createSession();<a name="line.174"></a>
+<span class="sourceLineNo">175</span> this.pathParams<a name="line.175"></a>
+<span class="sourceLineNo">176</span> .setParser(urlEncodingParser)<a name="line.176"></a>
+<span class="sourceLineNo">177</span> .setBeanSession(beanSession);<a name="line.177"></a>
+<span class="sourceLineNo">178</span> this.queryParams<a name="line.178"></a>
+<span class="sourceLineNo">179</span> .addDefault(defQuery)<a name="line.179"></a>
+<span class="sourceLineNo">180</span> .setParser(urlEncodingParser)<a name="line.180"></a>
+<span class="sourceLineNo">181</span> .setBeanSession(beanSession);<a name="line.181"></a>
+<span class="sourceLineNo">182</span> this.headers<a name="line.182"></a>
+<span class="sourceLineNo">183</span> .addDefault(defHeader)<a name="line.183"></a>
+<span class="sourceLineNo">184</span> .addDefault(context.getDefaultRequestHeaders())<a name="line.184"></a>
+<span class="sourceLineNo">185</span> .setParser(urlEncodingParser)<a name="line.185"></a>
+<span class="sourceLineNo">186</span> .setBeanSession(beanSession);<a name="line.186"></a>
+<span class="sourceLineNo">187</span> this.body<a name="line.187"></a>
+<span class="sourceLineNo">188</span> .setEncoders(encoders)<a name="line.188"></a>
+<span class="sourceLineNo">189</span> .setParsers(mParsers)<a name="line.189"></a>
+<span class="sourceLineNo">190</span> .setHeaders(headers)<a name="line.190"></a>
+<span class="sourceLineNo">191</span> .setBeanSession(beanSession)<a name="line.191"></a>
+<span class="sourceLineNo">192</span> .setUrlEncodingParser(mUrlEncodingParser);<a name="line.192"></a>
+<span class="sourceLineNo">193</span> this.serializerGroup = mSerializers;<a name="line.193"></a>
+<span class="sourceLineNo">194</span> this.parserGroup = mParsers;<a name="line.194"></a>
+<span class="sourceLineNo">195</span> this.defaultCharset = defaultCharset;<a name="line.195"></a>
+<span class="sourceLineNo">196</span> this.defFormData = defFormData;<a name="line.196"></a>
+<span class="sourceLineNo">197</span> this.widgets = widgets;<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span> if (debug) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span> String msg = ""<a name="line.200"></a>
+<span class="sourceLineNo">201</span> + "\n=== HTTP Request (incoming) ===================================================="<a name="line.201"></a>
+<span class="sourceLineNo">202</span> + toString()<a name="line.202"></a>
+<span class="sourceLineNo">203</span> + "\n=== END ========================================================================";<a name="line.203"></a>
+<span class="sourceLineNo">204</span> context.getLogger().log(Level.WARNING, msg);<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> if (isPlainText())<a name="line.207"></a>
+<span class="sourceLineNo">208</span> this.properties.put(SerializerContext.SERIALIZER_useWhitespace, true);<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> /**<a name="line.211"></a>
+<span class="sourceLineNo">212</span> * Returns a string of the form <js>"HTTP method-name full-url"</js><a name="line.212"></a>
+<span class="sourceLineNo">213</span> *<a name="line.213"></a>
+<span class="sourceLineNo">214</span> * @return A description of the request.<a name="line.214"></a>
+<span class="sourceLineNo">215</span> */<a name="line.215"></a>
+<span class="sourceLineNo">216</span> public String getDescription() {<a name="line.216"></a>
+<span class="sourceLineNo">217</span> String qs = getQueryString();<a name="line.217"></a>
+<span class="sourceLineNo">218</span> return "HTTP " + getMethod() + " " + getRequestURI() + (qs == null ? "" : "?" + qs);<a name="line.218"></a>
+<span class="sourceLineNo">219</span> }<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> * Same as {@link #getAttribute(String)} but returns a default value if not found.<a name="line.222"></a>
+<span class="sourceLineNo">223</span> *<a name="line.223"></a>
+<span class="sourceLineNo">224</span> * @param name The request attribute name.<a name="line.224"></a>
+<span class="sourceLineNo">225</span> * @param def The default value if the attribute doesn't exist.<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * @return The request attribute value.<a name="line.226"></a>
+<span class="sourceLineNo">227</span> */<a name="line.227"></a>
+<span class="sourceLineNo">228</span> public Object getAttribute(String name, Object def) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span> Object o = super.getAttribute(name);<a name="line.229"></a>
+<span class="sourceLineNo">230</span> return (o == null ? def : o);<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> * Shorthand method for calling {@link #setAttribute(String, Object)} fluently.<a name="line.234"></a>
+<span class="sourceLineNo">235</span> *<a name="line.235"></a>
+<span class="sourceLineNo">236</span> * @param name The request attribute name.<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * @param value The request attribute value.<a name="line.237"></a>
+<span class="sourceLineNo">238</span> * @return This object (for method chaining).<a name="line.238"></a>
+<span class="sourceLineNo">239</span> */<a name="line.239"></a>
+<span class="sourceLineNo">240</span> public RestRequest attr(String name, Object value) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span> setAttribute(name, value);<a name="line.241"></a>
+<span class="sourceLineNo">242</span> return this;<a name="line.242"></a>
+<span class="sourceLineNo">243</span> }<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span> /**<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * Resolves the specified property.<a name="line.247"></a>
+<span class="sourceLineNo">248</span> *<a name="line.248"></a>
+<span class="sourceLineNo">249</span> * @param cm<a name="line.249"></a>
+<span class="sourceLineNo">250</span> * The <code>CallMethod</code> object where the <code>HtmlDocSerializer</code> settings are defined.<a name="line.250"></a>
+<span class="sourceLineNo">251</span> * Optional value. If not specified, then won't resolve <code>HtmlDocSerializer</code> properties.<a name="line.251"></a>
+<span class="sourceLineNo">252</span> * @param category<a name="line.252"></a>
+<span class="sourceLineNo">253</span> * The property category.<a name="line.253"></a>
+<span class="sourceLineNo">254</span> * The possible values are:<a name="line.254"></a>
+<span class="sourceLineNo">255</span> * <ul><a name="line.255"></a>
+<span class="sourceLineNo">256</span> * <li><a name="line.256"></a>
+<span class="sourceLineNo">257</span> * <js>"Attribute"</js> - Value returned by {@link HttpServletRequest#getAttribute(String)}.<a name="line.257"></a>
+<span class="sourceLineNo">258</span> * <li><a name="line.258"></a>
+<span class="sourceLineNo">259</span> * <js>"FormData"</js> - Value returned by {@link RestRequest#getFormData(String)}.<a name="line.259"></a>
+<span class="sourceLineNo">260</span> * <li><a name="line.260"></a>
+<span class="sourceLineNo">261</span> * <js>"Header"</js> - Value returned by {@link RestRequest#getHeader(String)}.<a name="line.261"></a>
+<span class="sourceLineNo">262</span> * <li><a name="line.262"></a>
+<span class="sourceLineNo">263</span> * <js>"HtmlDocSerializer"</js><a name="line.263"></a>
+<span class="sourceLineNo">264</span> * <br>Valid names:<a name="line.264"></a>
+<span class="sourceLineNo">265</span> * <ul><a name="line.265"></a>
+<span class="sourceLineNo">266</span> * <li><js>"aside"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_aside}<a name="line.266"></a>
+<span class="sourceLineNo">267</span> * <li><js>"footer"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_footer}<a name="line.267"></a>
+<span class="sourceLineNo">268</span> * <li><js>"header"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_header}<a name="line.268"></a>
+<span class="sourceLineNo">269</span> * <li><js>"links.list"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_links}<a name="line.269"></a>
+<span class="sourceLineNo">270</span> * <li><js>"nav"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_nav}<a name="line.270"></a>
+<span class="sourceLineNo">271</span> * <li><js>"noResultsMessage"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_noResultsMessage}<a name="line.271"></a>
+<span class="sourceLineNo">272</span> * <li><js>"nowrap"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_nowrap}<a name="line.272"></a>
+<span class="sourceLineNo">273</span> * <li><js>"script.list"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_script}<a name="line.273"></a>
+<span class="sourceLineNo">274</span> * <li><js>"style.list"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_style}<a name="line.274"></a>
+<span class="sourceLineNo">275</span> * <li><js>"stylesheet"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_stylesheet}<a name="line.275"></a>
+<span class="sourceLineNo">276</span> * <li><js>"template"</js> - See {@link HtmlDocSerializerContext#HTMLDOC_template}<a name="line.276"></a>
+<span class="sourceLineNo">277</span> * </ul><a name="line.277"></a>
+<span class="sourceLineNo">278</span> * <li><a name="line.278"></a>
+<span class="sourceLineNo">279</span> * <js>"Path"</js> - Value returned by {@link RestRequest#getPath(String)}.<a name="line.279"></a>
+<span class="sourceLineNo">280</span> * <li><a name="line.280"></a>
+<span class="sourceLineNo">281</span> * <js>"Query"</js> = Value returned by {@link RestRequest#getQuery(String)}.<a name="line.281"></a>
+<span class="sourceLineNo">282</span> * <li><a name="line.282"></a>
+<span class="sourceLineNo">283</span> * <js>"Request"</js><a name="line.283"></a>
+<span class="sourceLineNo">284</span> * <br>Valid names:<a name="line.284"></a>
+<span class="sourceLineNo">285</span> * <ul><a name="line.285"></a>
+<span class="sourceLineNo">286</span> * <li><js>"contextPath"</js> - Value returned by {@link RestRequest#getContextPath()}<a name="line.286"></a>
+<span class="sourceLineNo">287</span> * <li><js>"method"</js> - Value returned by {@link RestRequest#getMethod()}<a name="line.287"></a>
+<span class="sourceLineNo">288</span> * <li><js>"methodDescription"</js> - Value returned by {@link RestRequest#getMethodDescription()}<a name="line.288"></a>
+<span class="sourceLineNo">289</span> * <li><js>"methodSummary"</js> - Value returned by {@link RestRequest#getMethodSummary()}<a name="line.289"></a>
+<span class="sourceLineNo">290</span> * <li><js>"pathInfo"</js> - Value returned by {@link RestRequest#getPathInfo()}<a name="line.290"></a>
+<span class="sourceLineNo">291</span> * <li><js>"requestParentURI"</js> - Value returned by {@link UriContext#getRootRelativePathInfoParent()}<a name="line.291"></a>
+<span class="sourceLineNo">292</span> * <li><js>"requestURI"</js> - Value returned by {@link RestRequest#getRequestURI()}<a name="line.292"></a>
+<span class="sourceLineNo">293</span> * <li><js>"servletClass"</js> - The class name of the servlet<a name="line.293"></a>
+<span class="sourceLineNo">294</span> * <li><js>"servletClassSimple"</js> - The simple class name of the servlet.<a name="line.294"></a>
+<span class="sourceLineNo">295</span> * <li><js>"servletDescription"</js> - Value returned by {@link RestRequest#getServletDescription()}<a name="line.295"></a>
+<span class="sourceLineNo">296</span> * <li><js>"servletParentURI"</js> - Value returned by {@link UriContext#getRootRelativeServletPathParent()}<a name="line.296"></a>
+<span class="sourceLineNo">297</span> * <li><js>"servletPath"</js> - See {@link RestRequest#getServletPath()}<a name="line.297"></a>
+<span class="sourceLineNo">298</span> * <li><js>"servletTitle"</js> - See {@link RestRequest#getServletTitle()}<a name="line.298"></a>
+<span class="sourceLineNo">299</span> * <li><js>"servletURI"</js> - See {@link UriContext#getRootRelativeServletPath()}<a name="line.299"></a>
+<span class="sourceLineNo">300</span> * <li><js>"siteName"</js> - See {@link RestRequest#getSiteName()}<a name="line.300"></a>
+<span class="sourceLineNo">301</span> * </ul><a name="line.301"></a>
+<span class="sourceLineNo">302</span> * </ul><a name="line.302"></a>
+<span class="sourceLineNo">303</span> * @param name The property name.<a name="line.303"></a>
+<span class="sourceLineNo">304</span> * @return The resolve property, or <jk>null</jk> if it wasn't found.<a name="line.304"></a>
+<span class="sourceLineNo">305</span> */<a name="line.305"></a>
+<span class="sourceLineNo">306</span> public Object resolveProperty(CallMethod cm, String category, String name) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span> char c = category.charAt(0);<a name="line.307"></a>
+<span class="sourceLineNo">308</span> if (c == 'A') {<a name="line.308"></a>
+<span class="sourceLineNo">309</span> if ("Attribute".equals(category))<a name="line.309"></a>
+<span class="sourceLineNo">310</span> return getAttribute(name);<a name="line.310"></a>
+<span class="sourceLineNo">311</span> } else if (c == 'F') {<a name="line.311"></a>
+<span class="sourceLineNo">312</span> if ("FormData".equals(category))<a name="line.312"></a>
+<span class="sourceLineNo">313</span> return getFormData(name);<a name="line.313"></a>
+<span class="sourceLineNo">314</span> } else if (c == 'H') {<a name="line.314"></a>
+<span class="sourceLineNo">315</span> if ("Header".equals(category))<a name="line.315"></a>
+<span class="sourceLineNo">316</span> return getHeader(name);<a name="line.316"></a>
+<span class="sourceLineNo">317</span> if ("HtmlDocSerializer".equals(category) && cm != null) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span> char c2 = StringUtils.charAt(name, 0);<a name="line.318"></a>
+<span class="sourceLineNo">319</span> if (c2 == 'a') {<a name="line.319"></a>
+<span class="sourceLineNo">320</span> if ("aside".equals(name))<a name="line.320"></a>
+<span class="sourceLineNo">321</span> return cm.htmlAside == null ? null : resolveVars(cm.htmlAside);<a name="line.321"></a>
+<span class="sourceLineNo">322</span> } else if (c2 == 'f') {<a name="line.322"></a>
+<span class="sourceLineNo">323</span> if ("footer".equals(name))<a name="line.323"></a>
+<span class="sourceLineNo">324</span> return cm.htmlFooter == null ? null : resolveVars(cm.htmlFooter);<a name="line.324"></a>
+<span class="sourceLineNo">325</span> } else if (c2 == 'h') {<a name="line.325"></a>
+<span class="sourceLineNo">326</span> if ("header".equals(name))<a name="line.326"></a>
+<span class="sourceLineNo">327</span> return cm.htmlHeader == null ? null : resolveVars(cm.htmlHeader);<a name="line.327"></a>
+<span class="sourceLineNo">328</span> } else if (c2 == 'l') {<a name="line.328"></a>
+<span class="sourceLineNo">329</span> if ("links.list".equals(name)) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span> if (cm.htmlLinks == null || cm.htmlLinks.length == 0)<a name="line.330"></a>
+<span class="sourceLineNo">331</span> return null;<a name="line.331"></a>
+<span class="sourceLineNo">332</span> try {<a name="line.332"></a>
+<span class="sourceLineNo">333</span> List<String> la = new ArrayList<String>();<a name="line.333"></a>
+<span class="sourceLineNo">334</span> for (String l : cm.htmlLinks) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span> // Temporary backwards compatibility with JSON object format.<a name="line.335"></a>
+<span class="sourceLineNo">336</span> if (l.startsWith("{")) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span> ObjectMap m = new ObjectMap(l);<a name="line.337"></a>
+<span class="sourceLineNo">338</span> for (Map.Entry<String,Object> e : m.entrySet())<a name="line.338"></a>
+<span class="sourceLineNo">339</span> la.add(resolveVars(e.getKey()) + ":" + resolveVars(StringUtils.toString(e.getValue())));<a name="line.339"></a>
+<span class="sourceLineNo">340</span> } else {<a name="line.340"></a>
+<span class="sourceLineNo">341</span> la.add(resolveVars(l));<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> return la;<a name="line.344"></a>
+<span class="sourceLineNo">345</span> } catch (ParseException e) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span> throw new RuntimeException(e);<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> } else if (c2 == 'n') {<a name="line.349"></a>
+<span class="sourceLineNo">350</span> if ("nav".equals(name))<a name="line.350"></a>
+<span class="sourceLineNo">351</span> return cm.htmlNav == null ? null : resolveVars(cm.htmlNav);<a name="line.351"></a>
+<span class="sourceLineNo">352</span> if ("noResultsMessage".equals(name))<a name="line.352"></a>
+<span class="sourceLineNo">353</span> return cm.htmlNoResultsMessage == null ? null : resolveVars(cm.htmlNoResultsMessage);<a name="line.353"></a>
+<span class="sourceLineNo">354</span> if ("nowrap".equals(name))<a name="line.354"></a>
+<span class="sourceLineNo">355</span> return cm.htmlNoWrap;<a name="line.355"></a>
+<span class="sourceLineNo">356</span> } else if (c2 == 's') {<a name="line.356"></a>
+<span class="sourceLineNo">357</span> if ("script.list".equals(name)) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span> Set<String> l = new LinkedHashSet<String>();<a name="line.358"></a>
+<span class="sourceLineNo">359</span> if (cm.htmlScript != null)<a name="line.359"></a>
+<span class="sourceLineNo">360</span> l.add(resolveVars(cm.htmlScript));<a name="line.360"></a>
+<span class="sourceLineNo">361</span> for (Widget w : getWidgets().values()) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span> String script;<a name="line.362"></a>
+<span class="sourceLineNo">363</span> try {<a name="line.363"></a>
+<span class="sourceLineNo">364</span> script = w.getScript(this);<a name="line.364"></a>
+<span class="sourceLineNo">365</span> } catch (Exception e) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span> script = e.getLocalizedMessage();<a name="line.366"></a>
+<span class="sourceLineNo">367</span> }<a name="line.367"></a>
+<span class="sourceLineNo">368</span> if (script != null)<a name="line.368"></a>
+<span class="sourceLineNo">369</span> l.add(resolveVars(script));<a name="line.369"></a>
+<span class="sourceLineNo">370</span> }<a name="line.370"></a>
+<span class="sourceLineNo">371</span> return l;<a name="line.371"></a>
+<span class="sourceLineNo">372</span> }<a name="line.372"></a>
+<span class="sourceLineNo">373</span> if ("style.list".equals(name)) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span> Set<String> l = new LinkedHashSet<String>();<a name="line.374"></a>
+<span class="sourceLineNo">375</span> if (cm.htmlStyle != null)<a name="line.375"></a>
+<span class="sourceLineNo">376</span> l.add(resolveVars(cm.htmlStyle));<a name="line.376"></a>
+<span class="sourceLineNo">377</span> for (Widget w : getWidgets().values()) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span> String style;<a name="line.378"></a>
+<span class="sourceLineNo">379</span> try {<a name="line.379"></a>
+<span class="sourceLineNo">380</span> style = w.getStyle(this);<a name="line.380"></a>
+<span class="sourceLineNo">381</span> } catch (Exception e) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span> style = e.getLocalizedMessage();<a name="line.382"></a>
+<span class="sourceLineNo">383</span> }<a name="line.383"></a>
+<span class="sourceLineNo">384</span> if (style != null)<a name="line.384"></a>
+<span class="sourceLineNo">385</span> l.add(resolveVars(style));<a name="line.385"></a>
+<span class="sourceLineNo">386</span> }<a name="line.386"></a>
+<span class="sourceLineNo">387</span> return l;<a name="line.387"></a>
+<span class="sourceLineNo">388</span> }<a name="line.388"></a>
+<span class="sourceLineNo">389</span> if ("stylesheet".equals(name)) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span> String s = getStylesheet();<a name="line.390"></a>
+<span class="sourceLineNo">391</span> // Exclude absolute URIs to stylesheets for security reasons.<a name="line.391"></a>
+<span class="sourceLineNo">392</span> if (s == null || isAbsoluteUri(s))<a name="line.392"></a>
+<span class="sourceLineNo">393</span> s = cm.htmlStylesheet;<a name="line.393"></a>
+<span class="sourceLineNo">394</span> return s == null ? null : resolveVars(s);<a name="line.394"></a>
+<span class="sourceLineNo">395</span> }<a name="line.395"></a>
+<span class="sourceLineNo">396</span> } else if (c2 == 't') {<a name="line.396"></a>
+<span class="sourceLineNo">397</span> if ("template".equals(name))<a name="line.397"></a>
+<span class="sourceLineNo">398</span> return cm.htmlTemplate;<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> } else if (c == 'P') {<a name="line.401"></a>
+<span class="sourceLineNo">402</span> if ("Path".equals(category))<a name="line.402"></a>
+<span class="sourceLineNo">403</span> return getPath(name);<a name="line.403"></a>
+<span class="sourceLineNo">404</span> } else if (c == 'Q') {<a name="line.404"></a>
+<span class="sourceLineNo">405</span> if ("Query".equals(category))<a name="line.405"></a>
+<span class="sourceLineNo">406</span> return getQuery(name);<a name="line.406"></a>
+<span class="sourceLineNo">407</span> } else if (c == 'R') {<a name="line.407"></a>
+<span class="sourceLineNo">408</span> if ("Request".equals(category)) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span> char c2 = StringUtils.charAt(name, 0);<a name="line.409"></a>
+<span class="sourceLineNo">410</span> if (c == 'c') {<a name="line.410"></a>
+<span class="sourceLineNo">411</span> if ("contextPath".equals(name))<a name="line.411"></a>
+<span class="sourceLineNo">412</span> return getContextPath();<a name="line.412"></a>
+<span class="sourceLineNo">413</span> } else if (c2 == 'm') {<a name="line.413"></a>
+<span class="sourceLineNo">414</span> if ("method".equals(name))<a name="line.414"></a>
+<span class="sourceLineNo">415</span> return getMethod();<a name="line.415"></a>
+<span class="sourceLineNo">416</span> if ("methodDescription".equals(name))<a name="line.416"></a>
+<span class="sourceLineNo">417</span> return getMethodDescription();<a name="line.417"></a>
+<span class="sourceLineNo">418</span> if ("methodSummary".equals(name))<a name="line.418"></a>
+<span class="sourceLineNo">419</span> return getMethodSummary();<a name="line.419"></a>
+<span class="sourceLineNo">420</span> } else if (c2 == 'p') {<a name="line.420"></a>
+<span class="sourceLineNo">421</span> if ("pathInfo".equals(name))<a name="line.421"></a>
+<span class="sourceLineNo">422</span> return getPathInfo();<a name="line.422"></a>
+<span class="sourceLineNo">423</span> } else if (c2 == 'r') {<a name="line.423"></a>
+<span class="sourceLineNo">424</span> if ("requestParentURI".equals(name))<a name="line.424"></a>
+<span class="sourceLineNo">425</span> return getUriContext().getRootRelativePathInfoParent();<a name="line.425"></a>
+<span class="sourceLineNo">426</span> if ("requestURI".equals(name))<a name="line.426"></a>
+<span class="sourceLineNo">427</span> return getRequestURI();<a name="line.427"></a>
+<span class="sourceLineNo">428</span> } else if (c2 == 's') {<a name="line.428"></a>
+<span class="sourceLineNo">429</span> if ("servletClass".equals(name))<a name="line.429"></a>
+<span class="sourceLineNo">430</span> return getContext().getResource().getClass().getName();<a name="line.430"></a>
+<span class="sourceLineNo">431</span> if ("servletClassSimple".equals(name))<a name="line.431"></a>
+<span class="sourceLineNo">432</span> return getContext().getResource().getClass().getSimpleName();<a name="line.432"></a>
+<span class="sourceLineNo">433</span> if ("servletDescription".equals(name))<a name="line.433"></a>
+<span class="sourceLineNo">434</span> return getServletDescription();<a name="line.434"></a>
+<span class="sourceLineNo">435</span> if ("servletParentURI".equals(name))<a name="line.435"></a>
+<span class="sourceLineNo">436</span> return getUriContext().getRootRelativeServletPathParent();<a name="line.436"></a>
+<span class="sourceLineNo">437</span> if ("servletPath".equals(name))<a name="line.437"></a>
+<span class="sourceLineNo">438</span> return getServletPath();<a name="line.438"></a>
+<span class="sourceLineNo">439</span> if ("servletTitle".equals(name))<a name="line.439"></a>
+<span class="sourceLineNo">440</span> return getServletTitle();<a name="line.440"></a>
+<span class="sourceLineNo">441</span> if ("servletURI".equals(name))<a name="line.441"></a>
+<span class="sourceLineNo">442</span> return getUriContext().getRootRelativeServletPath();<a name="line.442"></a>
+<span class="sourceLineNo">443</span> if ("siteName".equals(name))<a name="line.443"></a>
+<span class="sourceLineNo">444</span> return getSiteName();<a name="line.444"></a>
+<span class="sourceLineNo">445</span> }<a name="line.445"></a>
+<span class="sourceLineNo">446</span> }<a name="line.446"></a>
+<span class="sourceLineNo">447</span> }<a name="line.447"></a>
+<span class="sourceLineNo">448</span> return null;<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> //--------------------------------------------------------------------------------<a name="line.451"></a>
+<span class="sourceLineNo">452</span> // Properties<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> /**<a name="line.455"></a>
+<span class="sourceLineNo">456</span> * Servlet calls this method to initialize the properties.<a name="line.456"></a>
+<span class="sourceLineNo">457</span> */<a name="line.457"></a>
+<span class="sourceLineNo">458</span> RestRequest setProperties(ObjectMap properties) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span> this.properties = properties;<a name="line.459"></a>
+<span class="sourceLineNo">460</span> return this;<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> * Retrieve the properties active for this request.<a name="line.464"></a>
<span class="sourceLineNo">465</span> *<a name="line.465"></a>
-<span class="sourceLineNo">466</span> * @return The properties active for this request.<a name="line.466"></a>
-<span class="sourceLineNo">467</span> */<a name="line.467"></a>
-<span class="sourceLineNo">468</span> public ObjectMap getProperties() {<a name="line.468"></a>
-<span class="sourceLineNo">469</span> return this.properties;<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> * Shortcut for calling <code>getProperties().append(name, value);</code> fluently.<a name="line.473"></a>
-<span class="sourceLineNo">474</span> *<a name="line.474"></a>
-<span class="sourceLineNo">475</span> * @param name The property name.<a name="line.475"></a>
-<span class="sourceLineNo">476</span> * @param value The property value.<a name="line.476"></a>
-<span class="sourceLineNo">477</span> * @return This object (for method chaining).<a name="line.477"></a>
-<span class="sourceLineNo">478</span> */<a name="line.478"></a>
-<span class="sourceLineNo">479</span> public RestRequest prop(String name, Object value) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span> this.properties.append(name, value);<a name="line.480"></a>
-<span class="sourceLineNo">481</span> return this;<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> // Headers<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> * Returns the headers on this request.<a name="line.490"></a>
-<span class="sourceLineNo">491</span> *<a name="line.491"></a>
-<span class="sourceLineNo">492</span> * @return The headers on this request. Never <jk>null</jk>.<a name="line.492"></a>
-<span class="sourceLineNo">493</span> */<a name="line.493"></a>
-<span class="sourceLineNo">494</span> public RequestHeaders getHeaders() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span> return headers;<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 /* ServletRequest */<a name="line.498"></a>
-<span class="sourceLineNo">499</span> public String getHeader(String name) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span> return getHeaders().getString(name);<a name="line.500"></a>
-<span class="sourceLineNo">501</span> }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span> @Override /* ServletRequest */<a name="line.503"></a>
-<span class="sourceLineNo">504</span> public Enumeration<String> getHeaders(String name) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span> String[] v = headers.get(name);<a name="line.505"></a>
-<span class="sourceLineNo">506</span> if (v == null || v.length == 0)<a name="line.506"></a>
-<span class="sourceLineNo">507</span> return Collections.enumeration(Collections.EMPTY_LIST);<a name="line.507"></a>
-<span class="sourceLineNo">508</span> return Collections.enumeration(Arrays.asList(v));<a name="line.508"></a>
-<span class="sourceLineNo">509</span> }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span> /**<a name="line.511"></a>
-<span class="sourceLineNo">512</span> * Returns the media types that are valid for <code>Content-Type</code> headers on the request.<a name="line.512"></a>
-<span class="sourceLineNo">513</span> *<a name="line.513"></a>
-<span class="sourceLineNo">514</span> * @return The set of media types registered in the parser group of this request.<a name="line.514"></a>
-<span class="sourceLineNo">515</span> */<a name="line.515"></a>
-<span class="sourceLineNo">516</span> public List<MediaType> getSupportedMediaTypes() {<a name="line.516"></a>
-<span class="sourceLineNo">517</span> return parserGroup.getSupportedMediaTypes();<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> * Sets the charset to expect on the request body.<a name="line.521"></a>
-<span class="sourceLineNo">522</span> */<a name="line.522"></a>
-<span class="sourceLineNo">523</span> @Override /* ServletRequest */<a name="line.523"></a>
-<span class="sourceLineNo">524</span> public void setCharacterEncoding(String charset) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span> this.charset = charset;<a name="line.525"></a>
-<span class="sourceLineNo">526</span> }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span> /**<a name="line.528"></a>
-<span class="sourceLineNo">529</span> * Returns the charset specified on the <code>Content-Type</code> header, or <js>"UTF-8"</js> if not specified.<a name="line.529"></a>
-<span class="sourceLineNo">530</span> */<a name="line.530"></a>
-<span class="sourceLineNo">531</span> @Override /* ServletRequest */<a name="line.531"></a>
-<span class="sourceLineNo">532</span> public String getCharacterEncoding() {<a name="line.532"></a>
-<span class="sourceLineNo">533</span> if (charset == null) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span> // Determine charset<a name="line.534"></a>
-<span class="sourceLineNo">535</span> // NOTE: Don't use super.getCharacterEncoding() because the spec is implemented inconsistently.<a name="line.535"></a>
-<span class="sourceLineNo">536</span> // Jetty returns the default charset instead of null if the character is not specified on the request.<a name="line.536"></a>
-<span class="sourceLineNo">537</span> String h = getHeader("Content-Type");<a name="line.537"></a>
-<span class="sourceLineNo">538</span> if (h != null) {<a name="line.538"></a>
-<span class="sourceLineNo">539</span> int i = h.indexOf(";charset=");<a name="line.539"></a>
-<span class="sourceLineNo">540</span> if (i > 0)<a name="line.540"></a>
-<span class="sourceLineNo">541</span> charset = h.substring(i+9).trim();<a name="line.541"></a>
-<span class="sourceLineNo">542</span> }<a name="line.542"></a>
-<span class="sourceLineNo">543</span> if (charset == null)<a name="line.543"></a>
-<span class="sourceLineNo">544</span> charset = defaultCharset;<a name="line.544"></a>
-<span class="sourceLineNo">545</span> if (! Charset.isSupported(charset))<a name="line.545"></a>
-<span class="sourceLineNo">546</span> throw new RestException(SC_UNSUPPORTED_MEDIA_TYPE, "Unsupported charset in header ''Content-Type'': ''{0}''", h);<a name="line.546"></a>
-<span class="sourceLineNo">547</span> }<a name="line.547"></a>
-<span class="sourceLineNo">548</span> return charset;<a name="line.548"></a>
-<span class="sourceLineNo">549</span> }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span> @Override /* ServletRequest */<a name="line.551"></a>
-<span class="sourceLineNo">552</span> public Locale getLocale() {<a name="line.552"></a>
-<span class="sourceLineNo">553</span> String h = headers.getString("Accept-Language");<a name="line.553"></a>
-<span class="sourceLineNo">554</span> if (h != null) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span> MediaTypeRange[] mr = MediaTypeRange.parse(h);<a name="line.555"></a>
-<span class="sourceLineNo">556</span> if (mr.length > 0)<a name="line.556"></a>
-<span class="sourceLineNo">557</span> return toLocale(mr[0].getMediaType().getType());<a name="line.557"></a>
-<span class="sourceLineNo">558</span> }<a name="line.558"></a>
-<span class="sourceLineNo">559</span> return super.getLocale();<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> @Override /* ServletRequest */<a name="line.562"></a>
-<span class="sourceLineNo">563</span> public Enumeration<Locale> getLocales() {<a name="line.563"></a>
-<span class="sourceLineNo">564</span> String h = headers.getString("Accept-Language");<a name="line.564"></a>
-<span class="sourceLineNo">565</span> if (h != null) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span> MediaTypeRange[] mr = MediaTypeRange.parse(h);<a name="line.566"></a>
-<span class="sourceLineNo">567</span> if (mr.length > 0) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span> List<Locale> l = new ArrayList<Locale>(mr.length);<a name="line.568"></a>
-<span class="sourceLineNo">569</span> for (MediaTypeRange r : mr)<a name="line.569"></a>
-<span class="sourceLineNo">570</span> l.add(toLocale(r.getMediaType().getType()));<a name="line.570"></a>
-<span class="sourceLineNo">571</span> return enumeration(l);<a name="line.571"></a>
-<span class="sourceLineNo">572</span> }<a name="line.572"></a>
-<span class="sourceLineNo">573</span> }<a name="line.573"></a>
-<span class="sourceLineNo">574</span> return super.getLocales();<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> //--------------------------------------------------------------------------------<a name="line.578"></a>
-<span class="sourceLineNo">579</span> // Query parameters<a name="line.579"></a>
-<span class="sourceLineNo">580</span> //--------------------------------------------------------------------------------<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> * Equivalent to {@link #getParameterMap()}, but only looks for query parameters in the URL, not form posts.<a name="line.583"></a>
-<span class="sourceLineNo">584</span> *<a name="line.584"></a>
-<span class="sourceLineNo">585</span> * <p><a name="line.585"></a>
-<span class="sourceLineNo">586</span> * This method can be used to retrieve query parameters without triggering the underlying servlet API to load and<a name="line.586"></a>
-<span class="sourceLineNo">587</span> * parse the request body.<a name="line.587"></a>
-<span class="sourceLineNo">588</span> *<a name="line.588"></a>
-<span class="sourceLineNo">589</span> * <p><a name="line.589"></a>
-<span class="sourceLineNo">590</span> * This object is modifiable.<a name="line.590"></a>
+<span class="sourceLineNo">466</span> * <p><a name="line.466"></a>
+<span class="sourceLineNo">467</span> * These properties can be modified by the request.<a name="line.467"></a>
+<span class="sourceLineNo">468</span> *<a name="line.468"></a>
+<span class="sourceLineNo">469</span> * @return The properties active for this request.<a name="line.469"></a>
+<span class="sourceLineNo">470</span> */<a name="line.470"></a>
+<span class="sourceLineNo">471</span> public ObjectMap getProperties() {<a name="line.471"></a>
+<span class="sourceLineNo">472</span> return this.properties;<a name="line.472"></a>
+<span class="sourceLineNo">473</span> }<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span> /**<a name="line.475"></a>
+<span class="sourceLineNo">476</span> * Shortcut for calling <code>getProperties().append(name, value);</code> fluently.<a name="line.476"></a>
+<span class="sourceLineNo">477</span> *<a name="line.477"></a>
+<span class="sourceLineNo">478</span> * @param name The property name.<a name="line.478"></a>
+<span class="sourceLineNo">479</span> * @param value The property value.<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 RestRequest prop(String name, Object value) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span> this.properties.append(name, value);<a name="line.483"></a>
+<span class="sourceLineNo">484</span> return this;<a name="line.484"></a>
+<span class="sourceLineNo">485</span> }<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> // Headers<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> * Returns the headers on this request.<a name="line.493"></a>
+<span class="sourceLineNo">494</span> *<a name="line.494"></a>
+<span class="sourceLineNo">495</span> * @return The headers on this request. Never <jk>null</jk>.<a name="line.495"></a>
+<span class="sourceLineNo">496</span> */<a name="line.496"></a>
+<span class="sourceLineNo">497</span> public RequestHeaders getHeaders() {<a name="line.497"></a>
+<span class="sourceLineNo">498</span> return headers;<a name="line.498"></a>
+<span class="sourceLineNo">499</span> }<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span> @Override /* ServletRequest */<a name="line.501"></a>
+<span class="sourceLineNo">502</span> public String getHeader(String name) {<a name="line.502"></a>
+<span class="sourceLineNo">503</span> return getHeaders().getString(name);<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> @Override /* ServletRequest */<a name="line.506"></a>
+<span class="sourceLineNo">507</span> public Enumeration<String> getHeaders(String name) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span> String[] v = headers.get(name);<a name="line.508"></a>
+<span class="sourceLineNo">509</span> if (v == null || v.length == 0)<a name="line.509"></a>
+<span class="sourceLineNo">510</span> return Collections.enumeration(Collections.EMPTY_LIST);<a name="line.510"></a>
+<span class="sourceLineNo">511</span> return Collections.enumeration(Arrays.asList(v));<a name="line.511"></a>
+<span class="sourceLineNo">512</span> }<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class=
<TRUNCATED>
[20/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 ff9ae7a..289d934 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestContext.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestContext.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
<li class="blockList">
<hr>
<br>
-<pre>public final class <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.57">RestContext</a>
+<pre>public final class <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.58">RestContext</a>
extends <a href="../../../../org/apache/juneau/Context.html" title="class in org.apache.juneau">Context</a></pre>
<div class="block">Contains all the configuration on a REST resource and the entry points for handling REST calls.
@@ -242,9 +242,10 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected <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/RestContext.html#findParams-java.lang.reflect.Method-boolean-org.apache.juneau.rest.UrlPathPattern-">findParams</a></span>(<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,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestContext.html#findParams-java.lang.reflect.Method-boolean-org.apache.juneau.rest.UrlPathPattern-boolean-">findParams</a></span>(<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)</code>
+ <a href="../../../../org/apache/juneau/rest/UrlPathPattern.html" title="class in org.apache.juneau.rest">UrlPathPattern</a> pathPattern,
+ boolean isPreOrPost)</code>
<div class="block">Finds the <a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest"><code>RestParam</code></a> instances to handle resolving objects on the calls to the specified Java method.</div>
</td>
</tr>
@@ -645,7 +646,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
<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.82">REST_allowHeaderParams</a></pre>
+<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>
@@ -679,7 +680,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
<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.115">REST_allowMethodParam</a></pre>
+<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>
@@ -721,7 +722,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
<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.140">REST_allowBodyParam</a></pre>
+<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>
@@ -755,7 +756,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
<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.161">REST_renderResponseStackTraces</a></pre>
+<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>
@@ -785,7 +786,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
<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.179">REST_useStackTraceHashes</a></pre>
+<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>
@@ -812,7 +813,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
<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.196">REST_defaultCharset</a></pre>
+<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>
@@ -838,7 +839,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
<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.230">REST_paramFormat</a></pre>
+<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>
@@ -881,7 +882,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
<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.248">REST_resourceResolver</a></pre>
+<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>
@@ -916,7 +917,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.333">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.353">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>
@@ -946,7 +947,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.738">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.839">getResourceResolver</a>()</pre>
<div class="block">Returns the resource resolver associated with this context.
<p>
@@ -969,7 +970,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.818">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.919">getVarResolver</a>()</pre>
<div class="block">Returns the variable resolver for this servlet.
<p>
@@ -1054,7 +1055,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.834">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.935">getConfigFile</a>()</pre>
<div class="block">Returns the config file associated with this servlet.
<p>
@@ -1075,7 +1076,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.852">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.953">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.
@@ -1101,7 +1102,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.905">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.1006">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
@@ -1136,7 +1137,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.917">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.1018">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>
@@ -1157,7 +1158,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.936">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.1037">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)
@@ -1188,7 +1189,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.969">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.1070">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.
@@ -1209,7 +1210,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.981">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.1082">getHtmlHeader</a>()</pre>
<div class="block">The HTML page header contents.
<p>
@@ -1226,7 +1227,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.993">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.1094">getHtmlLinks</a>()</pre>
<div class="block">The HTML page nav section links.
<p>
@@ -1243,7 +1244,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.1005">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.1106">getHtmlNav</a>()</pre>
<div class="block">The HTML page nav section contents.
<p>
@@ -1260,7 +1261,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.1017">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.1118">getHtmlAside</a>()</pre>
<div class="block">The HTML page aside section contents.
<p>
@@ -1277,7 +1278,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.1029">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.1130">getHtmlFooter</a>()</pre>
<div class="block">The HTML page footer section contents.
<p>
@@ -1294,7 +1295,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.1041">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.1142">getHtmlStylesheet</a>()</pre>
<div class="block">The HTML page stylesheet URL.
<p>
@@ -1311,7 +1312,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.1053">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.1154">getHtmlStyle</a>()</pre>
<div class="block">The HTML page CSS contents.
<p>
@@ -1328,7 +1329,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.1065">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.1166">getHtmlScript</a>()</pre>
<div class="block">The HTML page Javascript contents.
<p>
@@ -1345,7 +1346,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.1077">getHtmlNoWrap</a>()</pre>
+<pre>public boolean <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1178">getHtmlNoWrap</a>()</pre>
<div class="block">The HTML page nowrap setting.
<p>
@@ -1362,7 +1363,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.1089">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.1190">getHtmlTemplate</a>()</pre>
<div class="block">The HTML page template.
<p>
@@ -1379,7 +1380,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.1102">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.1203">getHtmlNoResultsMessage</a>()</pre>
<div class="block">The HTML page no-results message.
<p>
@@ -1397,7 +1398,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.1114">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.1215">getHtmlWidgets</a>()</pre>
<div class="block">The widgets used for resolving <js>"$W{...}"<js> variables.
<p>
@@ -1414,7 +1415,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.1130">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.1231">getLogger</a>()</pre>
<div class="block">Returns the logger to use for this resource.
<p>
@@ -1435,7 +1436,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.1145">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.1246">getMessages</a>()</pre>
<div class="block">Returns the resource bundle used by this resource.
<p>
@@ -1455,7 +1456,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.1161">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.1262">getInfoProvider</a>()</pre>
<div class="block">Returns the REST information provider used by this resource.
<p>
@@ -1476,7 +1477,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.1177">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.1278">getCallHandler</a>()</pre>
<div class="block">Returns the REST call handler used by this resource.
<p>
@@ -1497,7 +1498,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.1186">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.1287">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>
@@ -1511,7 +1512,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.1199">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.1300">getResource</a>()</pre>
<div class="block">Returns the resource object.
<p>
@@ -1529,7 +1530,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.1210">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.1311">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>
@@ -1544,7 +1545,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.1219">checkForInitException</a>()
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1320">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>
@@ -1559,7 +1560,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.1233">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.1334">getParentContext</a>()</pre>
<div class="block">Returns the parent resource context (if this resource was initialized from a parent).
<p>
@@ -1577,7 +1578,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.1242">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.1343">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>
@@ -1591,7 +1592,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.1264">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.1365">getProperties</a>()</pre>
<div class="block">Returns the class-level properties associated with this servlet.
<p>
@@ -1618,7 +1619,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.1280">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.1381">getSerializers</a>()</pre>
<div class="block">Returns the serializers registered with this resource.
<p>
@@ -1639,7 +1640,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.1296">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.1397">getParsers</a>()</pre>
<div class="block">Returns the parsers registered with this resource.
<p>
@@ -1660,7 +1661,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.1306">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.1407">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>
@@ -1676,7 +1677,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.1317">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.1418">getChildResources</a>()</pre>
<div class="block">Returns the child resources associated with this servlet.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1691,7 +1692,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.1329">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.1430">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>
@@ -1708,7 +1709,7 @@ 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.1342">isRenderResponseStackTraces</a>()</pre>
+<pre>protected boolean <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1443">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>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1722,7 +1723,7 @@ 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.1351">isAllowHeaderParams</a>()</pre>
+<pre>protected boolean <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1452">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>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1736,7 +1737,7 @@ 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.1360">isAllowBodyParam</a>()</pre>
+<pre>protected boolean <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1461">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>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1750,7 +1751,7 @@ 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.1369">getDefaultCharset</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.1470">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>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1764,7 +1765,7 @@ 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.1378">getParamFormat</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.1479">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>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1778,7 +1779,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.1396">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.1497">getClientVersionHeader</a>()</pre>
<div class="block">Returns the name of the client version header name used by this resource.
<p>
@@ -1801,7 +1802,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.1407">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.1508">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>
@@ -1818,7 +1819,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.1423">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.1524">getBeanFilters</a>()</pre>
<div class="block">Returns the bean filters associated with this resource.
<p>
@@ -1839,7 +1840,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.1439">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.1540">getPojoSwaps</a>()</pre>
<div class="block">Returns the POJO swaps associated with this resource.
<p>
@@ -1854,15 +1855,16 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
</dl>
</li>
</ul>
-<a name="findParams-java.lang.reflect.Method-boolean-org.apache.juneau.rest.UrlPathPattern-">
+<a name="findParams-java.lang.reflect.Method-boolean-org.apache.juneau.rest.UrlPathPattern-boolean-">
<!-- -->
</a>
<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.1452">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.1554">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)
+ <a href="../../../../org/apache/juneau/rest/UrlPathPattern.html" title="class in org.apache.juneau.rest">UrlPathPattern</a> pathPattern,
+ boolean isPreOrPost)
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">Finds the <a href="../../../../org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest"><code>RestParam</code></a> instances to handle resolving objects on the calls to the specified Java method.</div>
<dl>
@@ -1870,6 +1872,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
<dd><code>method</code> - The Java method being called.</dd>
<dd><code>methodPlainParams</code> - Whether plain-params setting is specified.</dd>
<dd><code>pathPattern</code> - The parsed URL path pattern.</dd>
+<dd><code>isPreOrPost</code> - Whether this is a <ja>@RestMethodPre</ja> or <ja>@RestMethodPost</ja>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The array of resolvers.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
@@ -1883,7 +1886,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.1529">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.1753">getUrlEncodingParser</a>()</pre>
<div class="block">Returns the URL-encoding parser associated with this resource.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1897,7 +1900,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.1538">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.1762">getUrlEncodingSerializer</a>()</pre>
<div class="block">Returns the URL-encoding serializer associated with this resource.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1911,7 +1914,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.1558">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.1782">getEncoders</a>()</pre>
<div class="block">Returns the encoders associated with this resource.
<p>
@@ -1936,7 +1939,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.1572">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.1796">getSupportedAcceptTypes</a>()</pre>
<div class="block">Returns the explicit list of supported accept types for this resource.
<p>
@@ -1955,7 +1958,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.1586">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.1810">getSupportedContentTypes</a>()</pre>
<div class="block">Returns the explicit list of supported content types for this resource.
<p>
@@ -1974,7 +1977,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.1605">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.1829">getDefaultRequestHeaders</a>()</pre>
<div class="block">Returns the default request headers for this resource.
<p>
@@ -1998,7 +2001,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.1625">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.1849">getDefaultResponseHeaders</a>()</pre>
<div class="block">Returns the default response headers for this resource.
<p>
@@ -2023,7 +2026,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.1644">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.1868">getConverters</a>()</pre>
<div class="block">Returns the converters associated with this resource at the class level.
<p>
@@ -2047,7 +2050,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.1663">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.1887">getGuards</a>()</pre>
<div class="block">Returns the guards associated with this resource at the class level.
<p>
@@ -2071,7 +2074,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.1683">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.1907">getResponseHandlers</a>()</pre>
<div class="block">Returns the response handlers associated with this resource.
<p>
@@ -2096,7 +2099,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.1697">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.1921">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>
@@ -2116,7 +2119,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.1716">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.1940">getFavIcon</a>()</pre>
<div class="block">Returns the favicon of the resource.
<p>
@@ -2140,7 +2143,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.1736">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.1960">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>
@@ -2166,7 +2169,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.1748">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.1972">getCallMethods</a>()</pre>
<div class="block">Returns the REST Java methods defined in this resource.
<p>
@@ -2183,7 +2186,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.1755">destroy</a>()</pre>
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.1979">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>
@@ -2193,7 +2196,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.1768">hasChildResources</a>()</pre>
+<pre>protected boolean <a href="../../../../src-html/org/apache/juneau/rest/RestContext.html#line.2000">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>
@@ -2207,7 +2210,7 @@ extends <a href="../../../../org/apache/juneau/Context.html" title="class in org
<ul class="blockListLast">
<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.1778">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.2010">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>
[25/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
Add @RestHook support.
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/84931d4d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/tree/84931d4d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/diff/84931d4d
Branch: refs/heads/asf-site
Commit: 84931d4dbe54a6cfd2caeb1924b366b3a62d0ee9
Parents: 58c75a0
Author: JamesBognar <ja...@apache.org>
Authored: Sun Aug 13 20:27:25 2017 -0400
Committer: JamesBognar <ja...@apache.org>
Committed: Sun Aug 13 20:27:25 2017 -0400
----------------------------------------------------------------------
content/site/apidocs/allclasses-frame.html | 2 +
content/site/apidocs/allclasses-noframe.html | 2 +
content/site/apidocs/index-all.html | 109 +-
.../juneau/html/HtmlBeanPropertyMeta.html | 49 +-
.../org/apache/juneau/html/annotation/Html.html | 49 +-
.../org/apache/juneau/internal/ClassUtils.html | 214 +-
.../org/apache/juneau/internal/StringUtils.html | 54 +-
.../apache/juneau/microservice/Resource.html | 43 +-
.../juneau/microservice/ResourceGroup.html | 43 +-
.../juneau/microservice/ResourceJena.html | 2 +-
.../juneau/microservice/ResourceJenaGroup.html | 43 +-
.../juneau/microservice/RestMicroservice.html | 162 +-
.../juneau/microservice/package-summary.html | 4 +-
.../juneau/microservice/package-tree.html | 2 +-
.../microservice/resources/ConfigResource.html | 4 +-
.../resources/DirectoryResource.html | 4 +-
.../resources/LogsResource.FileResource.html | 22 +-
.../microservice/resources/LogsResource.html | 54 +-
.../resources/SampleRootResource.html | 4 +-
.../resources/ShutdownResource.html | 4 +-
.../microservice/resources/package-tree.html | 2 +-
.../org/apache/juneau/rest/RestCallHandler.html | 113 +-
.../org/apache/juneau/rest/RestConfig.html | 142 +-
.../org/apache/juneau/rest/RestContext.html | 157 +-
.../org/apache/juneau/rest/RestRequest.html | 114 +-
.../org/apache/juneau/rest/RestResponse.html | 48 +-
.../org/apache/juneau/rest/RestServlet.html | 173 +-
.../apache/juneau/rest/RestServletDefault.html | 2 +-
.../juneau/rest/RestServletGroupDefault.html | 2 +-
.../apache/juneau/rest/annotation/Header.html | 4 +-
.../juneau/rest/annotation/HookEvent.html | 783 ++++
.../apache/juneau/rest/annotation/HtmlDoc.html | 4 +-
.../apache/juneau/rest/annotation/Response.html | 4 +-
.../apache/juneau/rest/annotation/RestHook.html | 271 ++
.../juneau/rest/annotation/RestMethod.html | 4 +-
.../juneau/rest/annotation/package-frame.html | 2 +
.../juneau/rest/annotation/package-summary.html | 16 +-
.../juneau/rest/annotation/package-tree.html | 2 +
.../juneau/rest/jaxrs/package-summary.html | 237 +-
.../juneau/rest/jaxrs/rdf/package-summary.html | 4 +-
.../rest/jena/RestServletJenaDefault.html | 2 +-
.../rest/jena/RestServletJenaGroupDefault.html | 2 +-
.../apache/juneau/rest/jena/package-tree.html | 2 +-
.../org/apache/juneau/rest/package-summary.html | 23 +-
.../org/apache/juneau/rest/package-tree.html | 2 +-
.../rest/remoteable/RemoteableServlet.html | 2 +-
.../juneau/rest/remoteable/package-tree.html | 2 +-
content/site/apidocs/overview-summary.html | 57 +-
content/site/apidocs/overview-tree.html | 4 +-
.../juneau/html/HtmlBeanPropertyMeta.html | 195 +-
.../juneau/html/HtmlSerializerSession.html | 673 ++--
.../org/apache/juneau/html/annotation/Html.html | 21 +-
.../internal/ClassUtils.ClassComparator.html | 438 ++-
.../juneau/internal/ClassUtils.MethodInfo.html | 438 ++-
.../org/apache/juneau/internal/ClassUtils.html | 438 ++-
.../org/apache/juneau/internal/StringUtils.html | 1233 +++---
.../apache/juneau/microservice/Resource.html | 110 +-
.../juneau/microservice/ResourceGroup.html | 112 +-
.../juneau/microservice/ResourceJenaGroup.html | 114 +-
.../juneau/microservice/RestMicroservice.html | 1299 +++---
.../resources/LogsResource.FileResource.html | 646 +--
.../microservice/resources/LogsResource.html | 646 +--
.../org/apache/juneau/rest/RequestBody.html | 19 +-
.../org/apache/juneau/rest/RestCallHandler.html | 514 ++-
.../org/apache/juneau/rest/RestConfig.html | 3049 +++++++-------
.../org/apache/juneau/rest/RestContext.html | 3704 ++++++++++--------
.../org/apache/juneau/rest/RestRequest.html | 2121 +++++-----
.../org/apache/juneau/rest/RestResponse.html | 966 ++---
.../org/apache/juneau/rest/RestServlet.html | 452 +--
.../apache/juneau/rest/RestServletDefault.html | 2 +-
.../juneau/rest/annotation/HookEvent.html | 491 +++
.../apache/juneau/rest/annotation/RestHook.html | 158 +
.../rest/jena/RestServletJenaDefault.html | 2 +-
.../juneau/rest/widget/StyleMenuItem.html | 2 +-
74 files changed, 11412 insertions(+), 9481 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/allclasses-frame.html b/content/site/apidocs/allclasses-frame.html
index 3b73272..2e1051a 100644
--- a/content/site/apidocs/allclasses-frame.html
+++ b/content/site/apidocs/allclasses-frame.html
@@ -275,6 +275,7 @@
<li><a href="org/apache/juneau/http/HeaderString.html" title="class in org.apache.juneau.http" target="classFrame">HeaderString</a></li>
<li><a href="org/apache/juneau/http/HeaderStringArray.html" title="class in org.apache.juneau.http" target="classFrame">HeaderStringArray</a></li>
<li><a href="org/apache/juneau/http/HeaderUri.html" title="class in org.apache.juneau.http" target="classFrame">HeaderUri</a></li>
+<li><a href="org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation" target="classFrame">HookEvent</a></li>
<li><a href="org/apache/juneau/http/Host.html" title="class in org.apache.juneau.http" target="classFrame">Host</a></li>
<li><a href="org/apache/juneau/dto/html5/Hr.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Hr</a></li>
<li><a href="org/apache/juneau/dto/html5/Html.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Html</a></li>
@@ -582,6 +583,7 @@
<li><a href="org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest" target="classFrame"><span class="interfaceName">RestConverter</span></a></li>
<li><a href="org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest" target="classFrame">RestException</a></li>
<li><a href="org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest" target="classFrame">RestGuard</a></li>
+<li><a href="org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation" target="classFrame">RestHook</a></li>
<li><a href="org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest" target="classFrame">RestInfoProvider</a></li>
<li><a href="org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest" target="classFrame">RestLogger</a></li>
<li><a href="org/apache/juneau/rest/RestLogger.NoOp.html" title="class in org.apache.juneau.rest" target="classFrame">RestLogger.NoOp</a></li>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/allclasses-noframe.html b/content/site/apidocs/allclasses-noframe.html
index d1391eb..05b9365 100644
--- a/content/site/apidocs/allclasses-noframe.html
+++ b/content/site/apidocs/allclasses-noframe.html
@@ -275,6 +275,7 @@
<li><a href="org/apache/juneau/http/HeaderString.html" title="class in org.apache.juneau.http">HeaderString</a></li>
<li><a href="org/apache/juneau/http/HeaderStringArray.html" title="class in org.apache.juneau.http">HeaderStringArray</a></li>
<li><a href="org/apache/juneau/http/HeaderUri.html" title="class in org.apache.juneau.http">HeaderUri</a></li>
+<li><a href="org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a></li>
<li><a href="org/apache/juneau/http/Host.html" title="class in org.apache.juneau.http">Host</a></li>
<li><a href="org/apache/juneau/dto/html5/Hr.html" title="class in org.apache.juneau.dto.html5">Hr</a></li>
<li><a href="org/apache/juneau/dto/html5/Html.html" title="class in org.apache.juneau.dto.html5">Html</a></li>
@@ -582,6 +583,7 @@
<li><a href="org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest"><span class="interfaceName">RestConverter</span></a></li>
<li><a href="org/apache/juneau/rest/RestException.html" title="class in org.apache.juneau.rest">RestException</a></li>
<li><a href="org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a></li>
+<li><a href="org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation">RestHook</a></li>
<li><a href="org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest">RestInfoProvider</a></li>
<li><a href="org/apache/juneau/rest/RestLogger.html" title="class in org.apache.juneau.rest">RestLogger</a></li>
<li><a href="org/apache/juneau/rest/RestLogger.NoOp.html" title="class in org.apache.juneau.rest">RestLogger.NoOp</a></li>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/index-all.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/index-all.html b/content/site/apidocs/index-all.html
index 1c00e57..007a6a2 100644
--- a/content/site/apidocs/index-all.html
+++ b/content/site/apidocs/index-all.html
@@ -351,6 +351,18 @@
<dd>
<div class="block">Add a dictionary name mapping for the specified collection class with the specified entry class.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Resource.html#addConfigVars-org.apache.juneau.rest.RestConfig-">addConfigVars(RestConfig)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></dt>
+<dd>
+<div class="block">Add <code>$ARGS</code> and <code>$MF</code> variable resolvers.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/ResourceGroup.html#addConfigVars-org.apache.juneau.rest.RestConfig-">addConfigVars(RestConfig)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a></dt>
+<dd>
+<div class="block">Initializes the registry URL and rest clent.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/ResourceJenaGroup.html#addConfigVars-org.apache.juneau.rest.RestConfig-">addConfigVars(RestConfig)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice">ResourceJenaGroup</a></dt>
+<dd>
+<div class="block">Add <code>$ARGS</code> and <code>$MF</code> variable resolvers.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/dto/swagger/Operation.html#addConsumes-org.apache.juneau.http.MediaType...-">addConsumes(MediaType...)</a></span> - Method in class org.apache.juneau.dto.swagger.<a href="org/apache/juneau/dto/swagger/Operation.html" title="class in org.apache.juneau.dto.swagger">Operation</a></dt>
<dd>
<div class="block">Bean property adder: <property>consumes</property>.</div>
@@ -1435,6 +1447,10 @@
<dd>
<div class="block">Returns the list of the media ranges that make up this header.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/ClassUtils.html#assertArgsOfType-java.lang.reflect.Method-java.lang.Class...-">assertArgsOfType(Method, Class<?>...)</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/ClassUtils.html" title="class in org.apache.juneau.internal">ClassUtils</a></dt>
+<dd>
+<div class="block">Throws an <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang"><code>IllegalArgumentException</code></a> if the parameters on the method are not in the specified list provided.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/ThrowableUtils.html#assertFieldNotNull-java.lang.Object-java.lang.String-">assertFieldNotNull(Object, String)</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/ThrowableUtils.html" title="class in org.apache.juneau.internal">ThrowableUtils</a></dt>
<dd>
<div class="block">Throws an <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang"><code>IllegalArgumentException</code></a> if the specified field is <jk>null</jk>.</div>
@@ -7336,7 +7352,7 @@
<dd>
<div class="block">Returns the first entry that exists converted to a <a href="org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau"><code>ObjectMap</code></a>.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#findParams-java.lang.reflect.Method-boolean-org.apache.juneau.rest.UrlPathPattern-">findParams(Method, boolean, UrlPathPattern)</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>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestContext.html#findParams-java.lang.reflect.Method-boolean-org.apache.juneau.rest.UrlPathPattern-boolean-">findParams(Method, boolean, UrlPathPattern, boolean)</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">Finds the <a href="org/apache/juneau/rest/RestParam.html" title="class in org.apache.juneau.rest"><code>RestParam</code></a> instances to handle resolving objects on the calls to the specified Java method.</div>
</dd>
@@ -8162,6 +8178,10 @@
<dd>
<div class="block">Bean property getter: <property>allowEmptyValue</property>.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/html/HtmlBeanPropertyMeta.html#getAnchorText--">getAnchorText()</a></span> - Method in class org.apache.juneau.html.<a href="org/apache/juneau/html/HtmlBeanPropertyMeta.html" title="class in org.apache.juneau.html">HtmlBeanPropertyMeta</a></dt>
+<dd>
+<div class="block">Specifies the anchor text for this property.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/html/HtmlSerializerSession.html#getAnchorText-org.apache.juneau.BeanPropertyMeta-java.lang.Object-">getAnchorText(BeanPropertyMeta, Object)</a></span> - Method in class org.apache.juneau.html.<a href="org/apache/juneau/html/HtmlSerializerSession.html" title="class in org.apache.juneau.html">HtmlSerializerSession</a></dt>
<dd>
<div class="block">Returns the anchor text to use for the specified URL object.</div>
@@ -11412,10 +11432,6 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestConfig.html#getServletContext--">getServletContext()</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> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/RestMicroservice.html#getServletContextHandler--">getServletContextHandler()</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 underlying servlet context handler.</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestRequest.html#getServletDescription--">getServletDescription()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a></dt>
<dd>
<div class="block">Returns the localized servlet description.</div>
@@ -12654,6 +12670,11 @@
</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/LogsResource.FileResource.html#highlighted">highlighted</a></span> - Variable in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/LogsResource.FileResource.html" title="class in org.apache.juneau.microservice.resources">LogsResource.FileResource</a></dt>
<dd> </dd>
+<dt><a href="org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation"><span class="typeNameLink">HookEvent</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">Identifies servlet and REST call lifecycle events which cause <a href="org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><code>@RestHook</code></a>-annotated Java methods
+ to be called.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/dto/swagger/Swagger.html#host-java.lang.String-">host(String)</a></span> - Method in class org.apache.juneau.dto.swagger.<a href="org/apache/juneau/dto/swagger/Swagger.html" title="class in org.apache.juneau.dto.swagger">Swagger</a></dt>
<dd>
<div class="block">Synonym for <a href="org/apache/juneau/dto/swagger/Swagger.html#setHost-java.lang.String-"><code>Swagger.setHost(String)</code></a>.</div>
@@ -14189,22 +14210,14 @@
<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>
annotations.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/Resource.html#init-org.apache.juneau.rest.RestConfig-">init(RestConfig)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/Resource.html" title="class in org.apache.juneau.microservice">Resource</a></dt>
-<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/ResourceGroup.html#init-org.apache.juneau.rest.RestConfig-">init(RestConfig)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceGroup.html" title="class in org.apache.juneau.microservice">ResourceGroup</a></dt>
-<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/ResourceJenaGroup.html#init-org.apache.juneau.rest.RestConfig-">init(RestConfig)</a></span> - Method in class org.apache.juneau.microservice.<a href="org/apache/juneau/microservice/ResourceJenaGroup.html" title="class in org.apache.juneau.microservice">ResourceJenaGroup</a></dt>
-<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/DirectoryResource.html#init--">init()</a></span> - Method in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/DirectoryResource.html" title="class in org.apache.juneau.microservice.resources">DirectoryResource</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/LogsResource.html#init-org.apache.juneau.rest.RestConfig-">init(RestConfig)</a></span> - Method in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/LogsResource.html" title="class in org.apache.juneau.microservice.resources">LogsResource</a></dt>
-<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServlet.html#init-javax.servlet.ServletConfig-">init(ServletConfig)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></dt>
-<dd> </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-">init(RestConfig)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></dt>
<dd>
-<div class="block">Resource initialization method.</div>
+<div class="block">Initializes the log directory and formatter.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServlet.html#init-javax.servlet.ServletConfig-">init(ServletConfig)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></dt>
+<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestContext-">init(RestContext)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></dt>
<dd>
<div class="block">Convenience method if you want to perform initialization on your resource after all configuration settings
@@ -17976,16 +17989,6 @@
<dd>
<div class="block"><a class="./org/apache/juneau/dto/html5/doclink" href="https://www.w3.org/TR/html5/webappapis.html#handler-onplaying">onplaying</a> attribute.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestCallHandler.html#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall(RestRequest, RestResponse)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a></dt>
-<dd>
-<div class="block">Callback method that gets invoked right after the REST Java method is invoked, but before the serializer is
- invoked.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServlet.html#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall(RestRequest, RestResponse)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></dt>
-<dd>
-<div class="block">Callback method that gets invoked right after the REST Java method is invoked, but before the serializer is
- invoked.</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/RestMicroservice.html#onPostStartServer--">onPostStartServer()</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">Called after the Jetty server is started.</div>
@@ -17994,14 +17997,6 @@
<dd>
<div class="block">Called after the Jetty server is stopped.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestCallHandler.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall(RestRequest)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a></dt>
-<dd>
-<div class="block">Callback method that gets invoked right before the REST Java method is invoked.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall(RestRequest)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></dt>
-<dd>
-<div class="block">Callback method that gets invoked right before the REST Java method is invoked.</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/dto/html5/HtmlElement.html#onprogress-java.lang.String-">onprogress(String)</a></span> - Method in class org.apache.juneau.dto.html5.<a href="org/apache/juneau/dto/html5/HtmlElement.html" title="class in org.apache.juneau.dto.html5">HtmlElement</a></dt>
<dd>
<div class="block"><a class="./org/apache/juneau/dto/html5/doclink" href="https://www.w3.org/TR/html5/webappapis.html#handler-onprogress">onprogress</a> attribute.</div>
@@ -18082,14 +18077,6 @@
<dd>
<div class="block"><a class="./org/apache/juneau/dto/html5/doclink" href="https://www.w3.org/TR/html5/webappapis.html#handler-onsubmit">onsubmit</a> attribute.</div>
</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestCallHandler.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess(RestRequest, RestResponse, long)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestCallHandler.html" title="class in org.apache.juneau.rest">RestCallHandler</a></dt>
-<dd>
-<div class="block">Callback method for listening for successful completion of requests.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess(RestRequest, RestResponse, long)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></dt>
-<dd>
-<div class="block">Callback method for listening for successful completion of requests.</div>
-</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/dto/html5/HtmlElement.html#onsuspend-java.lang.String-">onsuspend(String)</a></span> - Method in class org.apache.juneau.dto.html5.<a href="org/apache/juneau/dto/html5/HtmlElement.html" title="class in org.apache.juneau.dto.html5">HtmlElement</a></dt>
<dd>
<div class="block"><a class="./org/apache/juneau/dto/html5/doclink" href="https://www.w3.org/TR/html5/webappapis.html#handler-onsuspend">onsuspend</a> attribute.</div>
@@ -18295,11 +18282,11 @@
</dd>
<dt><a href="org/apache/juneau/rest/jaxrs/package-summary.html">org.apache.juneau.rest.jaxrs</a> - package org.apache.juneau.rest.jaxrs</dt>
<dd>
-<div class="block">JAX-RS / Wink integration components</div>
+<div class="block">JAX-RS integration components</div>
</dd>
<dt><a href="org/apache/juneau/rest/jaxrs/rdf/package-summary.html">org.apache.juneau.rest.jaxrs.rdf</a> - package org.apache.juneau.rest.jaxrs.rdf</dt>
<dd>
-<div class="block">JAX-RS / Wink integration components with RDF support</div>
+<div class="block">JAX-RS integration components with RDF support</div>
</dd>
<dt><a href="org/apache/juneau/rest/jena/package-summary.html">org.apache.juneau.rest.jena</a> - package org.apache.juneau.rest.jena</dt>
<dd>
@@ -21969,6 +21956,11 @@
</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestGuard.html#RestGuard--">RestGuard()</a></span> - Constructor for class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RestGuard.html" title="class in org.apache.juneau.rest">RestGuard</a></dt>
<dd> </dd>
+<dt><a href="org/apache/juneau/rest/annotation/RestHook.html" title="annotation in org.apache.juneau.rest.annotation"><span class="typeNameLink">RestHook</span></a> - Annotation Type in <a href="org/apache/juneau/rest/annotation/package-summary.html">org.apache.juneau.rest.annotation</a></dt>
+<dd>
+<div class="block">Identifies Java methods on a resource/servlet class that get invoked during particular lifecycle events of
+ the servlet or REST call.</div>
+</dd>
<dt><a href="org/apache/juneau/rest/RestInfoProvider.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestInfoProvider</span></a> - Class in <a href="org/apache/juneau/rest/package-summary.html">org.apache.juneau.rest</a></dt>
<dd>
<div class="block">Class that provides documentation and other related information about a REST resource.</div>
@@ -23852,6 +23844,10 @@
<dd>
<div class="block">Bean property setter: <property>items</property>.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/RestMicroservice.html#setJettyXml-java.lang.Object-">setJettyXml(Object)</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">Sets the <code>jetty.xml</code> used to configure the Jetty server.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/RestClientBuilder.html#setKeepAliveStrategy-org.apache.http.conn.ConnectionKeepAliveStrategy-">setKeepAliveStrategy(ConnectionKeepAliveStrategy)</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/cognos/Column.html#setLength-java.lang.Integer-">setLength(Integer)</a></span> - Method in class org.apache.juneau.dto.cognos.<a href="org/apache/juneau/dto/cognos/Column.html" title="class in org.apache.juneau.dto.cognos">Column</a></dt>
@@ -25109,6 +25105,14 @@
<dd>
<div class="block">Create a new session using properties specified in the context.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/ClassUtils.html#sort-java.lang.reflect.Method:A-">sort(Method[])</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/ClassUtils.html" title="class in org.apache.juneau.internal">ClassUtils</a></dt>
+<dd>
+<div class="block">Sorts methods in alphabetical order.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/ClassUtils.html#sort-java.lang.reflect.Field:A-">sort(Field[])</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/ClassUtils.html" title="class in org.apache.juneau.internal">ClassUtils</a></dt>
+<dd>
+<div class="block">Sorts methods in alphabetical order.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/serializer/SerializerSession.html#sort-java.util.Map-">sort(Map<K, V>)</a></span> - Method in class org.apache.juneau.serializer.<a href="org/apache/juneau/serializer/SerializerSession.html" title="class in org.apache.juneau.serializer">SerializerSession</a></dt>
<dd>
<div class="block">Sorts the specified map if <a href="org/apache/juneau/serializer/SerializerSession.html#isSortMaps--"><code>SerializerSession.isSortMaps()</code></a> returns <jk>true</jk>.</div>
@@ -26924,6 +26928,14 @@
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/CharSequenceReader.html#toString--">toString()</a></span> - Method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/CharSequenceReader.html" title="class in org.apache.juneau.internal">CharSequenceReader</a></dt>
<dd> </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/ClassUtils.html#toString-java.lang.reflect.Method-">toString(Method)</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/ClassUtils.html" title="class in org.apache.juneau.internal">ClassUtils</a></dt>
+<dd>
+<div class="block">Returns a readable representation of the specified method.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/ClassUtils.html#toString-java.lang.reflect.Field-">toString(Field)</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/ClassUtils.html" title="class in org.apache.juneau.internal">ClassUtils</a></dt>
+<dd>
+<div class="block">Returns a readable representation of the specified field.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/StringBuilderWriter.html#toString--">toString()</a></span> - Method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/StringBuilderWriter.html" title="class in org.apache.juneau.internal">StringBuilderWriter</a></dt>
<dd> </dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/StringUtils.html#toString-java.lang.Object-">toString(Object)</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>
@@ -28460,6 +28472,10 @@
<dd>
<div class="block">Returns the enum constant of this type with the specified name.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/annotation/HookEvent.html#valueOf-java.lang.String-">valueOf(String)</a></span> - Static method in enum org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a></dt>
+<dd>
+<div class="block">Returns the enum constant of this type with the specified name.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/annotation/Inherit.html#valueOf-java.lang.String-">valueOf(String)</a></span> - Static method in enum org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/Inherit.html" title="enum in org.apache.juneau.rest.annotation">Inherit</a></dt>
<dd>
<div class="block">Returns the enum constant of this type with the specified name.</div>
@@ -28543,6 +28559,11 @@ the order they are declared.</div>
<div class="block">Returns an array containing the constants of this enum type, in
the order they are declared.</div>
</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/annotation/HookEvent.html#values--">values()</a></span> - Static method in enum org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/HookEvent.html" title="enum in org.apache.juneau.rest.annotation">HookEvent</a></dt>
+<dd>
+<div class="block">Returns an array containing the constants of this enum type, in
+the order they are declared.</div>
+</dd>
<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/annotation/Inherit.html#values--">values()</a></span> - Static method in enum org.apache.juneau.rest.annotation.<a href="org/apache/juneau/rest/annotation/Inherit.html" title="enum in org.apache.juneau.rest.annotation">Inherit</a></dt>
<dd>
<div class="block">Returns an array containing the constants of this enum type, in
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/html/HtmlBeanPropertyMeta.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/html/HtmlBeanPropertyMeta.html b/content/site/apidocs/org/apache/juneau/html/HtmlBeanPropertyMeta.html
index b17862b..1657746 100644
--- a/content/site/apidocs/org/apache/juneau/html/HtmlBeanPropertyMeta.html
+++ b/content/site/apidocs/org/apache/juneau/html/HtmlBeanPropertyMeta.html
@@ -18,7 +18,7 @@
catch(err) {
}
//-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@@ -156,35 +156,41 @@ extends <a href="../../../../org/apache/juneau/BeanPropertyMetaExtended.html" ti
</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/html/HtmlBeanPropertyMeta.html#getAnchorText--">getAnchorText</a></span>()</code>
+<div class="block">Specifies the anchor text for this property.</div>
+</td>
+</tr>
+<tr id="i1" 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/html/HtmlBeanPropertyMeta.html#getLink--">getLink</a></span>()</code>
<div class="block">Adds a hyperlink to this value in HTML.</div>
</td>
</tr>
-<tr id="i1" class="rowColor">
+<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/juneau/html/HtmlRender.html" title="class in org.apache.juneau.html">HtmlRender</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/html/HtmlBeanPropertyMeta.html#getRender--">getRender</a></span>()</code>
<div class="block">Returns the render class for rendering the style and contents of this property value in HTML.</div>
</td>
</tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/html/HtmlBeanPropertyMeta.html#isAsPlainText--">isAsPlainText</a></span>()</code>
<div class="block">Returns whether this bean property should be serialized as plain text instead of HTML.</div>
</td>
</tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/html/HtmlBeanPropertyMeta.html#isAsXml--">isAsXml</a></span>()</code>
<div class="block">Returns whether this bean property should be serialized as XML instead of HTML.</div>
</td>
</tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/html/HtmlBeanPropertyMeta.html#isNoTableHeaders--">isNoTableHeaders</a></span>()</code>
<div class="block">Returns whether this bean property should not include table headers when serialized as an HTML table.</div>
</td>
</tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/html/HtmlBeanPropertyMeta.html#isNoTables--">isNoTables</a></span>()</code>
<div class="block">Returns whether this bean property should not be serialized as an HTML table.</div>
@@ -250,7 +256,7 @@ extends <a href="../../../../org/apache/juneau/BeanPropertyMetaExtended.html" ti
<ul class="blockList">
<li class="blockList">
<h4>isAsXml</h4>
-<pre>protected boolean <a href="../../../../src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html#line.82">isAsXml</a>()</pre>
+<pre>protected boolean <a href="../../../../src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html#line.85">isAsXml</a>()</pre>
<div class="block">Returns whether this bean property should be serialized as XML instead of HTML.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -264,7 +270,7 @@ extends <a href="../../../../org/apache/juneau/BeanPropertyMetaExtended.html" ti
<ul class="blockList">
<li class="blockList">
<h4>isAsPlainText</h4>
-<pre>protected boolean <a href="../../../../src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html#line.93">isAsPlainText</a>()</pre>
+<pre>protected boolean <a href="../../../../src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html#line.96">isAsPlainText</a>()</pre>
<div class="block">Returns whether this bean property should be serialized as plain text instead of HTML.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -279,7 +285,7 @@ extends <a href="../../../../org/apache/juneau/BeanPropertyMetaExtended.html" ti
<ul class="blockList">
<li class="blockList">
<h4>isNoTables</h4>
-<pre>protected boolean <a href="../../../../src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html#line.104">isNoTables</a>()</pre>
+<pre>protected boolean <a href="../../../../src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html#line.107">isNoTables</a>()</pre>
<div class="block">Returns whether this bean property should not be serialized as an HTML table.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -294,7 +300,7 @@ extends <a href="../../../../org/apache/juneau/BeanPropertyMetaExtended.html" ti
<ul class="blockList">
<li class="blockList">
<h4>isNoTableHeaders</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html#line.115">isNoTableHeaders</a>()</pre>
+<pre>public boolean <a href="../../../../src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html#line.118">isNoTableHeaders</a>()</pre>
<div class="block">Returns whether this bean property should not include table headers when serialized as an HTML table.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -309,7 +315,7 @@ extends <a href="../../../../org/apache/juneau/BeanPropertyMetaExtended.html" ti
<ul class="blockList">
<li class="blockList">
<h4>getRender</h4>
-<pre>public <a href="../../../../org/apache/juneau/html/HtmlRender.html" title="class in org.apache.juneau.html">HtmlRender</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html#line.127">getRender</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/html/HtmlRender.html" title="class in org.apache.juneau.html">HtmlRender</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlBeanPropertyMeta.html#line.130">getRender</a>()</pre>
<div class="block">Returns the render class for rendering the style and contents of this property value in HTML.
<p>
@@ -323,10 +329,10 @@ extends <a href="../../../../org/apache/juneau/BeanPropertyMetaExtended.html" ti
<a name="getLink--">
<!-- -->
</a>
-<ul class="blockListLast">
+<ul class="blockList">
<li class="blockList">
<h4>getLink</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/html/HtmlBeanPropertyMeta.html#line.139">getLink</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/html/HtmlBeanPropertyMeta.html#line.142">getLink</a>()</pre>
<div class="block">Adds a hyperlink to this value in HTML.
<p>
@@ -337,6 +343,23 @@ extends <a href="../../../../org/apache/juneau/BeanPropertyMetaExtended.html" ti
</dl>
</li>
</ul>
+<a name="getAnchorText--">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getAnchorText</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/html/HtmlBeanPropertyMeta.html#line.154">getAnchorText</a>()</pre>
+<div class="block">Specifies the anchor text for this property.
+
+ <p>
+ This value is specified via the <a href="../../../../org/apache/juneau/html/annotation/Html.html#anchorText--"><code>Html.anchorText()</code></a> annotation.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The link string, or <jk>null</jk> if not specified.</dd>
+</dl>
+</li>
+</ul>
</li>
</ul>
</li>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/html/annotation/Html.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/html/annotation/Html.html b/content/site/apidocs/org/apache/juneau/html/annotation/Html.html
index 1e62822..3cd1934 100644
--- a/content/site/apidocs/org/apache/juneau/html/annotation/Html.html
+++ b/content/site/apidocs/org/apache/juneau/html/annotation/Html.html
@@ -117,36 +117,42 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/html/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/html/annotation/Html.html#anchorText--">anchorText</a></span></code>
+<div class="block">Use the specified anchor text when serializing a URI.</div>
+</td>
+</tr>
+<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/html/annotation/Html.html#asPlainText--">asPlainText</a></span></code>
<div class="block">Treat as plain text.</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/html/annotation/Html.html#asXml--">asXml</a></span></code>
<div class="block">Treat as XML.</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/html/annotation/Html.html#link--">link</a></span></code>
<div class="block">Adds a hyperlink to a bean property when rendered as HTML.</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/html/annotation/Html.html#noTableHeaders--">noTableHeaders</a></span></code>
<div class="block">When <jk>true</jk>, don't add headers to tables.</div>
</td>
</tr>
-<tr class="altColor">
+<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/html/annotation/Html.html#noTables--">noTables</a></span></code>
<div class="block">When <jk>true</jk>, collections of beans should be rendered as trees instead of tables.</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/html/HtmlRender.html" title="class in org.apache.juneau.html">HtmlRender</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/html/annotation/Html.html#render--">render</a></span></code>
<div class="block">Associates an <a href="../../../../../org/apache/juneau/html/HtmlRender.html" title="class in org.apache.juneau.html"><code>HtmlRender</code></a> with a bean property for custom HTML rendering of the property.</div>
@@ -271,7 +277,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/html/annota
<li class="blockList"><a name="link--">
<!-- -->
</a>
-<ul class="blockListLast">
+<ul class="blockList">
<li class="blockList">
<h4>link</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/html/annotation/Html.html#line.100">link</a></pre>
@@ -308,6 +314,37 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/html/annota
</ul>
</li>
</ul>
+<ul class="blockList">
+<li class="blockList"><a name="anchorText--">
+<!-- -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>anchorText</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/html/annotation/Html.html#line.119">anchorText</a></pre>
+<div class="block">Use the specified anchor text when serializing a URI.
+
+ <p>
+ The text can contain any bean property values resolved through variables of the form <js>"{property-name}"</js>.
+
+ <h6 class='figure'>Example:</h6>
+ <p class='bcode'>
+ <jk>public class</jk> FileSpace {
+
+ <ja>@Html</ja>(anchorText=<js>"drive/{drive}"</js>)
+ <jk>public</jk> String getDrive() {
+ ...;
+ }
+ }
+ </p></div>
+<dl>
+<dt>Default:</dt>
+<dd>""</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
</li>
</ul>
</div>
[09/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 ae5b08a..3b7caa2 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
@@ -23,331 +23,337 @@
<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.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> flags={REST_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> @Override /* RestServlet */<a name="line.66"></a>
-<span class="sourceLineNo">067</span> public synchronized void init(RestConfig config) throws Exception {<a name="line.67"></a>
-<span class="sourceLineNo">068</span> super.init(config);<a name="line.68"></a>
-<span class="sourceLineNo">069</span> ConfigFile cf = config.getConfigFile();<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span> logDir = new File(cf.getString("Logging/logDir", "."));<a name="line.71"></a>
-<span class="sourceLineNo">072</span> leFormatter = new LogEntryFormatter(<a name="line.72"></a>
-<span class="sourceLineNo">073</span> cf.getString("Logging/format", "[{date} {level}] {msg}%n"),<a name="line.73"></a>
-<span class="sourceLineNo">074</span> cf.getString("Logging/dateFormat", "yyyy.MM.dd hh:mm:ss"),<a name="line.74"></a>
-<span class="sourceLineNo">075</span> cf.getBoolean("Logging/useStackTraceHashes")<a name="line.75"></a>
-<span class="sourceLineNo">076</span> );<a name="line.76"></a>
-<span class="sourceLineNo">077</span> }<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span> /**<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * [GET /*] - Get file details or directory listing.<a name="line.80"></a>
-<span class="sourceLineNo">081</span> *<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * @param req The HTTP request<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * @param res The HTTP response<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * @param properties The writable properties for setting the descriptions.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * @param path The log file path.<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * @return The log file.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * @throws Exception<a name="line.87"></a>
-<span class="sourceLineNo">088</span> */<a name="line.88"></a>
-<span class="sourceLineNo">089</span> @RestMethod(<a name="line.89"></a>
-<span class="sourceLineNo">090</span> name="GET",<a name="line.90"></a>
-<span class="sourceLineNo">091</span> path="/*",<a name="line.91"></a>
-<span class="sourceLineNo">092</span> swagger=@MethodSwagger(<a name="line.92"></a>
-<span class="sourceLineNo">093</span> responses={@Response(200),@Response(404)}<a name="line.93"></a>
-<span class="sourceLineNo">094</span> )<a name="line.94"></a>
-<span class="sourceLineNo">095</span> )<a name="line.95"></a>
-<span class="sourceLineNo">096</span> public Object getFileOrDirectory(RestRequest req, RestResponse res, @Properties ObjectMap properties, @PathRemainder String path) throws Exception {<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span> File f = getFile(path);<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span> if (f.isDirectory()) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span> Set<FileResource> l = new TreeSet<FileResource>(new FileResourceComparator());<a name="line.101"></a>
-<span class="sourceLineNo">102</span> File[] files = f.listFiles(filter);<a name="line.102"></a>
-<span class="sourceLineNo">103</span> if (files != null) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span> for (File fc : files) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span> URI fUrl = new URI("servlet:/" + fc.getName());<a name="line.105"></a>
-<span class="sourceLineNo">106</span> l.add(new FileResource(fc, fUrl));<a name="line.106"></a>
-<span class="sourceLineNo">107</span> }<a name="line.107"></a>
-<span class="sourceLineNo">108</span> }<a name="line.108"></a>
-<span class="sourceLineNo">109</span> return l;<a name="line.109"></a>
-<span class="sourceLineNo">110</span> }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span> return new FileResource(f, new URI("servlet:/"));<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> * [VIEW /*] - Retrieve the contents of a log 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> * @param res The HTTP response.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * @param path The log file path.<a name="line.120"></a>
-<span class="sourceLineNo">121</span> * @param properties The writable properties for setting the descriptions.<a name="line.121"></a>
-<span class="sourceLineNo">122</span> * @param highlight If <code>true</code>, add color highlighting based on severity.<a name="line.122"></a>
-<span class="sourceLineNo">123</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.123"></a>
-<span class="sourceLineNo">124</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.124"></a>
-<span class="sourceLineNo">125</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.125"></a>
-<span class="sourceLineNo">126</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.126"></a>
-<span class="sourceLineNo">127</span> * @param severity Optional severity filter. Only show log entries with the specified severity. Example: "&amp;severity=(ERROR,WARN)".<a name="line.127"></a>
-<span class="sourceLineNo">128</span> * @throws Exception<a name="line.128"></a>
-<span class="sourceLineNo">129</span> */<a name="line.129"></a>
-<span class="sourceLineNo">130</span> @RestMethod(<a name="line.130"></a>
-<span class="sourceLineNo">131</span> name="VIEW",<a name="line.131"></a>
-<span class="sourceLineNo">132</span> path="/*",<a name="line.132"></a>
-<span class="sourceLineNo">133</span> swagger=@MethodSwagger(<a name="line.133"></a>
-<span class="sourceLineNo">134</span> responses={@Response(200),@Response(404)}<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> @SuppressWarnings("nls")<a name="line.137"></a>
-<span class="sourceLineNo">138</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.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span> File f = getFile(path);<a name="line.140"></a>
-<span class="sourceLineNo">141</span> if (f.isDirectory())<a name="line.141"></a>
-<span class="sourceLineNo">142</span> throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span> Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.144"></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> if (! highlight) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span> Object o = getReader(f, startDate, endDate, thread, loggers, severity);<a name="line.147"></a>
-<span class="sourceLineNo">148</span> res.setContentType("text/plain");<a name="line.148"></a>
-<span class="sourceLineNo">149</span> if (o instanceof Reader)<a name="line.149"></a>
-<span class="sourceLineNo">150</span> res.setOutput(o);<a name="line.150"></a>
-<span class="sourceLineNo">151</span> else {<a name="line.151"></a>
-<span class="sourceLineNo">152</span> LogParser p = (LogParser)o;<a name="line.152"></a>
-<span class="sourceLineNo">153</span> Writer w = res.getNegotiatedWriter();<a name="line.153"></a>
-<span class="sourceLineNo">154</span> try {<a name="line.154"></a>
-<span class="sourceLineNo">155</span> p.writeTo(w);<a name="line.155"></a>
-<span class="sourceLineNo">156</span> } finally {<a name="line.156"></a>
-<span class="sourceLineNo">157</span> w.flush();<a name="line.157"></a>
-<span class="sourceLineNo">158</span> w.close();<a name="line.158"></a>
-<span class="sourceLineNo">159</span> }<a name="line.159"></a>
-<span class="sourceLineNo">160</span> }<a name="line.160"></a>
-<span class="sourceLineNo">161</span> return;<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> res.setContentType("text/html");<a name="line.164"></a>
-<span class="sourceLineNo">165</span> PrintWriter w = res.getNegotiatedWriter();<a name="line.165"></a>
-<span class="sourceLineNo">166</span> try {<a name="line.166"></a>
-<span class="sourceLineNo">167</span> w.println("<html><body style='font-family:monospace;font-size:8pt;white-space:pre;'>");<a name="line.167"></a>
-<span class="sourceLineNo">168</span> LogParser lp = getLogParser(f, startDate, endDate, thread, loggers, severity);<a name="line.168"></a>
-<span class="sourceLineNo">169</span> try {<a name="line.169"></a>
-<span class="sourceLineNo">170</span> if (! lp.hasNext())<a name="line.170"></a>
-<span class="sourceLineNo">171</span> w.append("<span style='color:gray'>[EMPTY]</span>");<a name="line.171"></a>
-<span class="sourceLineNo">172</span> else for (LogParser.Entry le : lp) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span> char s = le.severity.charAt(0);<a name="line.173"></a>
-<span class="sourceLineNo">174</span> String color = "black";<a name="line.174"></a>
-<span class="sourceLineNo">175</span> //SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST<a name="line.175"></a>
-<span class="sourceLineNo">176</span> if (s == 'I')<a name="line.176"></a>
-<span class="sourceLineNo">177</span> color = "#006400";<a name="line.177"></a>
-<span class="sourceLineNo">178</span> else if (s == 'W')<a name="line.178"></a>
-<span class="sourceLineNo">179</span> color = "#CC8400";<a name="line.179"></a>
-<span class="sourceLineNo">180</span> else if (s == 'E' || s == 'S')<a name="line.180"></a>
-<span class="sourceLineNo">181</span> color = "#DD0000";<a name="line.181"></a>
-<span class="sourceLineNo">182</span> else if (s == 'D' || s == 'F' || s == 'T')<a name="line.182"></a>
-<span class="sourceLineNo">183</span> color = "#000064";<a name="line.183"></a>
-<span class="sourceLineNo">184</span> w.append("<span style='color:").append(color).append("'>");<a name="line.184"></a>
-<span class="sourceLineNo">185</span> le.appendHtml(w).append("</span>");<a name="line.185"></a>
-<span class="sourceLineNo">186</span> }<a name="line.186"></a>
-<span class="sourceLineNo">187</span> w.append("</body></html>");<a name="line.187"></a>
-<span class="sourceLineNo">188</span> } finally {<a name="line.188"></a>
-<span class="sourceLineNo">189</span> lp.close();<a name="line.189"></a>
-<span class="sourceLineNo">190</span> }<a name="line.190"></a>
-<span class="sourceLineNo">191</span> } finally {<a name="line.191"></a>
-<span class="sourceLineNo">192</span> w.close();<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> /**<a name="line.196"></a>
-<span class="sourceLineNo">197</span> * [VIEW /*] - Retrieve the contents of a log file as parsed entries.<a name="line.197"></a>
-<span class="sourceLineNo">198</span> *<a name="line.198"></a>
-<span class="sourceLineNo">199</span> * @param req The HTTP request.<a name="line.199"></a>
-<span class="sourceLineNo">200</span> * @param path The log file path.<a name="line.200"></a>
-<span class="sourceLineNo">201</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.201"></a>
-<span class="sourceLineNo">202</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.202"></a>
-<span class="sourceLineNo">203</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.203"></a>
-<span class="sourceLineNo">204</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.204"></a>
-<span class="sourceLineNo">205</span> * @param severity Optional severity filter. Only show log entries with the specified severity. Example: "&amp;severity=(ERROR,WARN)".<a name="line.205"></a>
-<span class="sourceLineNo">206</span> * @return The parsed contents of the log file.<a name="line.206"></a>
-<span class="sourceLineNo">207</span> * @throws Exception<a name="line.207"></a>
-<span class="sourceLineNo">208</span> */<a name="line.208"></a>
-<span class="sourceLineNo">209</span> @RestMethod(<a name="line.209"></a>
-<span class="sourceLineNo">210</span> name="PARSE",<a name="line.210"></a>
-<span class="sourceLineNo">211</span> path="/*",<a name="line.211"></a>
-<span class="sourceLineNo">212</span> converters=Queryable.class,<a name="line.212"></a>
-<span class="sourceLineNo">213</span> swagger=@MethodSwagger(<a name="line.213"></a>
-<span class="sourceLineNo">214</span> responses={@Response(200),@Response(404)}<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> 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.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span> File f = getFile(path);<a name="line.219"></a>
-<span class="sourceLineNo">220</span> Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span> if (f.isDirectory())<a name="line.222"></a>
-<span class="sourceLineNo">223</span> throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.223"></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> return getLogParser(f, startDate, endDate, thread, loggers, severity);<a name="line.225"></a>
-<span class="sourceLineNo">226</span> }<a name="line.226"></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> /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span> * [DOWNLOAD /*] - Download file.<a name="line.229"></a>
-<span class="sourceLineNo">230</span> *<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> * @param path The log file path.<a name="line.232"></a>
-<span class="sourceLineNo">233</span> * @return The contents of the log file.<a name="line.233"></a>
-<span class="sourceLineNo">234</span> * @throws Exception<a name="line.234"></a>
-<span class="sourceLineNo">235</span> */<a name="line.235"></a>
-<span class="sourceLineNo">236</span> @RestMethod(<a name="line.236"></a>
-<span class="sourceLineNo">237</span> name="DOWNLOAD",<a name="line.237"></a>
-<span class="sourceLineNo">238</span> path="/*",<a name="line.238"></a>
-<span class="sourceLineNo">239</span> swagger=@MethodSwagger(<a name="line.239"></a>
-<span class="sourceLineNo">240</span> responses={@Response(200),@Response(404)}<a name="line.240"></a>
-<span class="sourceLineNo">241</span> )<a name="line.241"></a>
-<span class="sourceLineNo">242</span> )<a name="line.242"></a>
-<span class="sourceLineNo">243</span> public Object downloadFile(RestResponse res, @PathRemainder String path) throws Exception {<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span> File f = getFile(path);<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/octet-stream");<a name="line.250"></a>
-<span class="sourceLineNo">251</span> res.setContentLength((int)f.length());<a name="line.251"></a>
-<span class="sourceLineNo">252</span> return new FileInputStream(f);<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> /**<a name="line.255"></a>
-<span class="sourceLineNo">256</span> * [DELETE /*] - Delete a file.<a name="line.256"></a>
-<span class="sourceLineNo">257</span> *<a name="line.257"></a>
-<span class="sourceLineNo">258</span> * @param path The log file path.<a name="line.258"></a>
-<span class="sourceLineNo">259</span> * @return A redirect object to the root.<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> @RestMethod(<a name="line.262"></a>
-<span class="sourceLineNo">263</span> name="DELETE",<a name="line.263"></a>
-<span class="sourceLineNo">264</span> path="/*",<a name="line.264"></a>
-<span class="sourceLineNo">265</span> swagger=@MethodSwagger(<a name="line.265"></a>
-<span class="sourceLineNo">266</span> responses={@Response(200),@Response(404)}<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> public Object deleteFile(@PathRemainder String path) throws Exception {<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span> File f = getFile(path);<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span> if (f.isDirectory())<a name="line.273"></a>
-<span class="sourceLineNo">274</span> throw new RestException(SC_BAD_REQUEST, "Delete not available on directories.");<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span> if (f.canWrite())<a name="line.276"></a>
-<span class="sourceLineNo">277</span> if (! f.delete())<a name="line.277"></a>
-<span class="sourceLineNo">278</span> throw new RestException(SC_FORBIDDEN, "Could not delete file.");<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span> return new Redirect(path + "/..");<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> private static BufferedReader getReader(File f) throws IOException {<a name="line.283"></a>
-<span class="sourceLineNo">284</span> return new BufferedReader(new InputStreamReader(new FileInputStream(f), Charset.defaultCharset()));<a name="line.284"></a>
-<span class="sourceLineNo">285</span> }<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span> private File getFile(String path) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span> if (path != null && path.indexOf("..") != -1)<a name="line.288"></a>
-<span class="sourceLineNo">289</span> throw new RestException(SC_NOT_FOUND, "File not found.");<a name="line.289"></a>
-<span class="sourceLineNo">290</span> File f = (path == null ? logDir : new File(logDir.getAbsolutePath() + '/' + path));<a name="line.290"></a>
-<span class="sourceLineNo">291</span> if (filter.accept(f))<a name="line.291"></a>
-<span class="sourceLineNo">292</span> return f;<a name="line.292"></a>
-<span class="sourceLineNo">293</span> throw new RestException(SC_NOT_FOUND, "File not found.");<a name="line.293"></a>
-<span class="sourceLineNo">294</span> }<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span> /**<a name="line.296"></a>
-<span class="sourceLineNo">297</span> * File bean.<a name="line.297"></a>
-<span class="sourceLineNo">298</span> */<a name="line.298"></a>
-<span class="sourceLineNo">299</span> @SuppressWarnings("javadoc")<a name="line.299"></a>
-<span class="sourceLineNo">300</span> public static class FileResource {<a name="line.300"></a>
-<span class="sourceLineNo">301</span> private File f;<a name="line.301"></a>
-<span class="sourceLineNo">302</span> public String type;<a name="line.302"></a>
-<span class="sourceLineNo">303</span> public Object name;<a name="line.303"></a>
-<span class="sourceLineNo">304</span> public Long size;<a name="line.304"></a>
-<span class="sourceLineNo">305</span> @BeanProperty(swap=DateSwap.DateTimeMedium.class) public Date lastModified;<a name="line.305"></a>
-<span class="sourceLineNo">306</span> public URI view, highlighted, parsed, download, delete;<a name="line.306"></a>
-<span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span> public FileResource(File f, URI uri) throws Exception {<a name="line.308"></a>
-<span class="sourceLineNo">309</span> this.f = f;<a name="line.309"></a>
-<span class="sourceLineNo">310</span> this.type = (f.isDirectory() ? "dir" : "file");<a name="line.310"></a>
-<span class="sourceLineNo">311</span> this.name = f.isDirectory() ? new Link(f.getName(), uri.toString()) : f.getName();<a name="line.311"></a>
-<span class="sourceLineNo">312</span> this.size = f.isDirectory() ? null : f.length();<a name="line.312"></a>
-<span class="sourceLineNo">313</span> this.lastModified = new Date(f.lastModified());<a name="line.313"></a>
-<span class="sourceLineNo">314</span> if (f.canRead() && ! f.isDirectory()) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span> this.view = new URI(uri + "?method=VIEW");<a name="line.315"></a>
-<span class="sourceLineNo">316</span> this.highlighted = new URI(uri + "?method=VIEW&highlight=true");<a name="line.316"></a>
-<span class="sourceLineNo">317</span> this.parsed = new URI(uri + "?method=PARSE");<a name="line.317"></a>
-<span class="sourceLineNo">318</span> this.download = new URI(uri + "?method=DOWNLOAD");<a name="line.318"></a>
-<span class="sourceLineNo">319</span> this.delete = new URI(uri + "?method=DELETE");<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><a name="line.323"></a>
-<span class="sourceLineNo">324</span> private static class FileResourceComparator implements Comparator<FileResource>, Serializable {<a name="line.324"></a>
-<span class="sourceLineNo">325</span> private static final long serialVersionUID = 1L;<a name="line.325"></a>
-<span class="sourceLineNo">326</span> @Override /* Comparator */<a name="line.326"></a>
-<span class="sourceLineNo">327</span> public int compare(FileResource o1, FileResource o2) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span> int c = o1.type.compareTo(o2.type);<a name="line.328"></a>
-<span class="sourceLineNo">329</span> return c != 0 ? c : o1.f.getName().compareTo(o2.f.getName());<a name="line.329"></a>
-<span class="sourceLineNo">330</span> }<a name="line.330"></a>
-<span class="sourceLineNo">331</span> }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</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.333"></a>
-<span class="sourceLineNo">334</span> if (start == null && end == null && thread == null && loggers == null)<a name="line.334"></a>
-<span class="sourceLineNo">335</span> return getReader(f);<a name="line.335"></a>
-<span class="sourceLineNo">336</span> return getLogParser(f, start, end, thread, loggers, severity);<a name="line.336"></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> @BeanProperty(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 LogParser getLogParser(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> return new LogParser(leFormatter, f, start, end, thread, loggers, severity);<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">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>
[07/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 a4b748a..f317b10 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
@@ -52,94 +52,94 @@
<span class="sourceLineNo">044</span><a name="line.44"></a>
<span class="sourceLineNo">045</span> private final RestContext context;<a name="line.45"></a>
<span class="sourceLineNo">046</span> private final RestLogger logger;<a name="line.46"></a>
-<span class="sourceLineNo">047</span> private final RestServlet restServlet;<a name="line.47"></a>
-<span class="sourceLineNo">048</span> private final Map<String,CallRouter> callRouters;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span> /**<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * Constructor.<a name="line.51"></a>
-<span class="sourceLineNo">052</span> *<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * @param context The resource context.<a name="line.53"></a>
-<span class="sourceLineNo">054</span> */<a name="line.54"></a>
-<span class="sourceLineNo">055</span> public RestCallHandler(RestContext context) {<a name="line.55"></a>
-<span class="sourceLineNo">056</span> this.context = context;<a name="line.56"></a>
-<span class="sourceLineNo">057</span> this.logger = context.getLogger();<a name="line.57"></a>
-<span class="sourceLineNo">058</span> this.callRouters = context.getCallRouters();<a name="line.58"></a>
-<span class="sourceLineNo">059</span> this.restServlet = context.getRestServlet(); // Null if this isn't a RestServlet!<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> * Creates a {@link RestRequest} object based on the specified incoming {@link HttpServletRequest} object.<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> * Subclasses may choose to override this method to provide a specialized request object.<a name="line.66"></a>
-<span class="sourceLineNo">067</span> *<a name="line.67"></a>
-<span class="sourceLineNo">068</span> * @param req The request object from the {@link #service(HttpServletRequest, HttpServletResponse)} method.<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * @return The wrapped request object.<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * @throws ServletException If any errors occur trying to interpret the request.<a name="line.70"></a>
-<span class="sourceLineNo">071</span> */<a name="line.71"></a>
-<span class="sourceLineNo">072</span> protected RestRequest createRequest(HttpServletRequest req) throws ServletException {<a name="line.72"></a>
-<span class="sourceLineNo">073</span> return new RestRequest(context, req);<a name="line.73"></a>
-<span class="sourceLineNo">074</span> }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span> /**<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * Creates a {@link RestResponse} object based on the specified incoming {@link HttpServletResponse} object<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * and the request returned by {@link #createRequest(HttpServletRequest)}.<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> * Subclasses may choose to override this method to provide a specialized response object.<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * @param req The request object returned by {@link #createRequest(HttpServletRequest)}.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * @param res The response object from the {@link #service(HttpServletRequest, HttpServletResponse)} method.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * @return The wrapped response object.<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * @throws ServletException If any errors occur trying to interpret the request or response.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> */<a name="line.87"></a>
-<span class="sourceLineNo">088</span> protected RestResponse createResponse(RestRequest req, HttpServletResponse res) throws ServletException {<a name="line.88"></a>
-<span class="sourceLineNo">089</span> return new RestResponse(context, req, res);<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">092</span> /**<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * The main service method.<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * <p><a name="line.95"></a>
-<span class="sourceLineNo">096</span> * Subclasses can optionally override this method if they want to tailor the behavior of requests.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> *<a name="line.97"></a>
-<span class="sourceLineNo">098</span> * @param r1 The incoming HTTP servlet request object.<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * @param r2 The incoming HTTP servlet response object.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * @throws ServletException<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * @throws IOException<a name="line.101"></a>
-<span class="sourceLineNo">102</span> */<a name="line.102"></a>
-<span class="sourceLineNo">103</span> protected void service(HttpServletRequest r1, HttpServletResponse r2) throws ServletException, IOException {<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span> logger.log(FINE, "HTTP: {0} {1}", r1.getMethod(), r1.getRequestURI());<a name="line.105"></a>
-<span class="sourceLineNo">106</span> long startTime = System.currentTimeMillis();<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span> try {<a name="line.108"></a>
-<span class="sourceLineNo">109</span> context.checkForInitException();<a name="line.109"></a>
+<span class="sourceLineNo">047</span> private final Map<String,CallRouter> callRouters;<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 context The resource context.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> */<a name="line.53"></a>
+<span class="sourceLineNo">054</span> public RestCallHandler(RestContext context) {<a name="line.54"></a>
+<span class="sourceLineNo">055</span> this.context = context;<a name="line.55"></a>
+<span class="sourceLineNo">056</span> this.logger = context.getLogger();<a name="line.56"></a>
+<span class="sourceLineNo">057</span> this.callRouters = context.getCallRouters();<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> * Creates a {@link RestRequest} object based on the specified incoming {@link HttpServletRequest} object.<a name="line.61"></a>
+<span class="sourceLineNo">062</span> *<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * <p><a name="line.63"></a>
+<span class="sourceLineNo">064</span> * Subclasses may choose to override this method to provide a specialized request object.<a name="line.64"></a>
+<span class="sourceLineNo">065</span> *<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * @param req The request object from the {@link #service(HttpServletRequest, HttpServletResponse)} method.<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * @return The wrapped request object.<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * @throws ServletException If any errors occur trying to interpret the request.<a name="line.68"></a>
+<span class="sourceLineNo">069</span> */<a name="line.69"></a>
+<span class="sourceLineNo">070</span> protected RestRequest createRequest(HttpServletRequest req) throws ServletException {<a name="line.70"></a>
+<span class="sourceLineNo">071</span> return new RestRequest(context, req);<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>
+<span class="sourceLineNo">075</span> * Creates a {@link RestResponse} object based on the specified incoming {@link HttpServletResponse} object<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * and the request returned by {@link #createRequest(HttpServletRequest)}.<a name="line.76"></a>
+<span class="sourceLineNo">077</span> *<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * <p><a name="line.78"></a>
+<span class="sourceLineNo">079</span> * Subclasses may choose to override this method to provide a specialized response object.<a name="line.79"></a>
+<span class="sourceLineNo">080</span> *<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * @param req The request object returned by {@link #createRequest(HttpServletRequest)}.<a name="line.81"></a>
+<span class="sourceLineNo">082</span> * @param res The response object from the {@link #service(HttpServletRequest, HttpServletResponse)} method.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> * @return The wrapped response object.<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * @throws ServletException If any errors occur trying to interpret the request or response.<a name="line.84"></a>
+<span class="sourceLineNo">085</span> */<a name="line.85"></a>
+<span class="sourceLineNo">086</span> protected RestResponse createResponse(RestRequest req, HttpServletResponse res) throws ServletException {<a name="line.86"></a>
+<span class="sourceLineNo">087</span> return new RestResponse(context, req, res);<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> /**<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * The main service method.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> *<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * <p><a name="line.93"></a>
+<span class="sourceLineNo">094</span> * Subclasses can optionally override this method if they want to tailor the behavior of requests.<a name="line.94"></a>
+<span class="sourceLineNo">095</span> *<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * @param r1 The incoming HTTP servlet request object.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * @param r2 The incoming HTTP servlet response object.<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * @throws ServletException<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * @throws IOException<a name="line.99"></a>
+<span class="sourceLineNo">100</span> */<a name="line.100"></a>
+<span class="sourceLineNo">101</span> protected void service(HttpServletRequest r1, HttpServletResponse r2) throws ServletException, IOException {<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span> logger.log(FINE, "HTTP: {0} {1}", r1.getMethod(), r1.getRequestURI());<a name="line.103"></a>
+<span class="sourceLineNo">104</span> long startTime = System.currentTimeMillis();<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span> try {<a name="line.106"></a>
+<span class="sourceLineNo">107</span> context.checkForInitException();<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span> String pathInfo = RestUtils.getPathInfoUndecoded(r1); // Can't use r1.getPathInfo() because we don't want '%2F' resolved.<a name="line.109"></a>
<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span> String pathInfo = RestUtils.getPathInfoUndecoded(r1); // Can't use r1.getPathInfo() because we don't want '%2F' resolved.<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span> // If this resource has child resources, try to recursively call them.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> if (pathInfo != null && context.hasChildResources() && (! pathInfo.equals("/"))) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span> int i = pathInfo.indexOf('/', 1);<a name="line.115"></a>
-<span class="sourceLineNo">116</span> String pathInfoPart = i == -1 ? pathInfo.substring(1) : pathInfo.substring(1, i);<a name="line.116"></a>
-<span class="sourceLineNo">117</span> RestContext childResource = context.getChildResource(pathInfoPart);<a name="line.117"></a>
-<span class="sourceLineNo">118</span> if (childResource != null) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span> final String pathInfoRemainder = (i == -1 ? null : pathInfo.substring(i));<a name="line.119"></a>
-<span class="sourceLineNo">120</span> final String servletPath = r1.getServletPath() + "/" + pathInfoPart;<a name="line.120"></a>
-<span class="sourceLineNo">121</span> final HttpServletRequest childRequest = new HttpServletRequestWrapper(r1) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span> @Override /* ServletRequest */<a name="line.122"></a>
-<span class="sourceLineNo">123</span> public String getPathInfo() {<a name="line.123"></a>
-<span class="sourceLineNo">124</span> return urlDecode(pathInfoRemainder);<a name="line.124"></a>
-<span class="sourceLineNo">125</span> }<a name="line.125"></a>
-<span class="sourceLineNo">126</span> @Override /* ServletRequest */<a name="line.126"></a>
-<span class="sourceLineNo">127</span> public String getServletPath() {<a name="line.127"></a>
-<span class="sourceLineNo">128</span> return servletPath;<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> childResource.getCallHandler().service(childRequest, r2);<a name="line.131"></a>
-<span class="sourceLineNo">132</span> return;<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">111</span> // If this resource has child resources, try to recursively call them.<a name="line.111"></a>
+<span class="sourceLineNo">112</span> if (pathInfo != null && context.hasChildResources() && (! pathInfo.equals("/"))) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span> int i = pathInfo.indexOf('/', 1);<a name="line.113"></a>
+<span class="sourceLineNo">114</span> String pathInfoPart = i == -1 ? pathInfo.substring(1) : pathInfo.substring(1, i);<a name="line.114"></a>
+<span class="sourceLineNo">115</span> RestContext childResource = context.getChildResource(pathInfoPart);<a name="line.115"></a>
+<span class="sourceLineNo">116</span> if (childResource != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span> final String pathInfoRemainder = (i == -1 ? null : pathInfo.substring(i));<a name="line.117"></a>
+<span class="sourceLineNo">118</span> final String servletPath = r1.getServletPath() + "/" + pathInfoPart;<a name="line.118"></a>
+<span class="sourceLineNo">119</span> final HttpServletRequest childRequest = new HttpServletRequestWrapper(r1) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span> @Override /* ServletRequest */<a name="line.120"></a>
+<span class="sourceLineNo">121</span> public String getPathInfo() {<a name="line.121"></a>
+<span class="sourceLineNo">122</span> return urlDecode(pathInfoRemainder);<a name="line.122"></a>
+<span class="sourceLineNo">123</span> }<a name="line.123"></a>
+<span class="sourceLineNo">124</span> @Override /* ServletRequest */<a name="line.124"></a>
+<span class="sourceLineNo">125</span> public String getServletPath() {<a name="line.125"></a>
+<span class="sourceLineNo">126</span> return servletPath;<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> childResource.getCallHandler().service(childRequest, r2);<a name="line.129"></a>
+<span class="sourceLineNo">130</span> return;<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><a name="line.133"></a>
+<span class="sourceLineNo">134</span> context.startCall(r1, r2);<a name="line.134"></a>
<span class="sourceLineNo">135</span><a name="line.135"></a>
<span class="sourceLineNo">136</span> RestRequest req = createRequest(r1);<a name="line.136"></a>
<span class="sourceLineNo">137</span> RestResponse res = createResponse(req, r2);<a name="line.137"></a>
@@ -186,203 +186,159 @@
<span class="sourceLineNo">178</span> handleResponse(req, res, output);<a name="line.178"></a>
<span class="sourceLineNo">179</span> }<a name="line.179"></a>
<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span> onSuccess(req, res, System.currentTimeMillis() - startTime);<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span> // Make sure our writer in RestResponse gets written.<a name="line.183"></a>
-<span class="sourceLineNo">184</span> res.flushBuffer();<a name="line.184"></a>
+<span class="sourceLineNo">181</span> // Make sure our writer in RestResponse gets written.<a name="line.181"></a>
+<span class="sourceLineNo">182</span> res.flushBuffer();<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span> r1.setAttribute("ExecTime", System.currentTimeMillis() - startTime);<a name="line.184"></a>
<span class="sourceLineNo">185</span><a name="line.185"></a>
<span class="sourceLineNo">186</span> } catch (RestException e) {<a name="line.186"></a>
<span class="sourceLineNo">187</span> handleError(r1, r2, e);<a name="line.187"></a>
-<span class="sourceLineNo">188</span> } catch (Throwable e) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span> handleError(r1, r2, new RestException(SC_INTERNAL_SERVER_ERROR, e));<a name="line.189"></a>
-<span class="sourceLineNo">190</span> }<a name="line.190"></a>
-<span class="sourceLineNo">191</span> logger.log(FINE, "HTTP: [{0} {1}] finished in {2}ms", r1.getMethod(), r1.getRequestURI(), System.currentTimeMillis()-startTime);<a name="line.191"></a>
-<span class="sourceLineNo">192</span> }<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> * The main method for serializing POJOs passed in through the {@link RestResponse#setOutput(Object)} method or<a name="line.195"></a>
-<span class="sourceLineNo">196</span> * returned by the Java method.<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> * Subclasses may override this method if they wish to modify the way the output is rendered or support other output<a name="line.199"></a>
-<span class="sourceLineNo">200</span> * formats.<a name="line.200"></a>
-<span class="sourceLineNo">201</span> *<a name="line.201"></a>
-<span class="sourceLineNo">202</span> * <p><a name="line.202"></a>
-<span class="sourceLineNo">203</span> * The default implementation simply iterates through the response handlers on this resource<a name="line.203"></a>
-<span class="sourceLineNo">204</span> * looking for the first one whose {@link ResponseHandler#handle(RestRequest, RestResponse, Object)} method returns<a name="line.204"></a>
-<span class="sourceLineNo">205</span> * <jk>true</jk>.<a name="line.205"></a>
-<span class="sourceLineNo">206</span> *<a name="line.206"></a>
-<span class="sourceLineNo">207</span> * @param req The HTTP request.<a name="line.207"></a>
-<span class="sourceLineNo">208</span> * @param res The HTTP response.<a name="line.208"></a>
-<span class="sourceLineNo">209</span> * @param output The output to serialize in the response.<a name="line.209"></a>
-<span class="sourceLineNo">210</span> * @throws IOException<a name="line.210"></a>
-<span class="sourceLineNo">211</span> * @throws RestException<a name="line.211"></a>
-<span class="sourceLineNo">212</span> */<a name="line.212"></a>
-<span class="sourceLineNo">213</span> protected void handleResponse(RestRequest req, RestResponse res, Object output) throws IOException, RestException {<a name="line.213"></a>
-<span class="sourceLineNo">214</span> // Loop until we find the correct handler for the POJO.<a name="line.214"></a>
-<span class="sourceLineNo">215</span> for (ResponseHandler h : context.getResponseHandlers())<a name="line.215"></a>
-<span class="sourceLineNo">216</span> if (h.handle(req, res, output))<a name="line.216"></a>
-<span class="sourceLineNo">217</span> return;<a name="line.217"></a>
-<span class="sourceLineNo">218</span> throw new RestException(SC_NOT_IMPLEMENTED, "No response handlers found to process output of type '"+(output == null ? null : output.getClass().getName())+"'");<a name="line.218"></a>
-<span class="sourceLineNo">219</span> }<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> * Handle the case where a matching method was not found.<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> * Subclasses can override this method to provide a 2nd-chance for specifying a response.<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * The default implementation will simply throw an exception with an appropriate message.<a name="line.226"></a>
-<span class="sourceLineNo">227</span> *<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * @param rc The HTTP response code.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> * @param req The HTTP request.<a name="line.229"></a>
-<span class="sourceLineNo">230</span> * @param res The HTTP response.<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * @throws Exception<a name="line.231"></a>
-<span class="sourceLineNo">232</span> */<a name="line.232"></a>
-<span class="sourceLineNo">233</span> protected void handleNotFound(int rc, RestRequest req, RestResponse res) throws Exception {<a name="line.233"></a>
-<span class="sourceLineNo">234</span> String pathInfo = req.getPathInfo();<a name="line.234"></a>
-<span class="sourceLineNo">235</span> String methodUC = req.getMethod();<a name="line.235"></a>
-<span class="sourceLineNo">236</span> String onPath = pathInfo == null ? " on no pathInfo" : String.format(" on path '%s'", pathInfo);<a name="line.236"></a>
-<span class="sourceLineNo">237</span> if (rc == SC_NOT_FOUND)<a name="line.237"></a>
-<span class="sourceLineNo">238</span> throw new RestException(rc, "Method ''{0}'' not found on resource with matching pattern{1}.", methodUC, onPath);<a name="line.238"></a>
-<span class="sourceLineNo">239</span> else if (rc == SC_PRECONDITION_FAILED)<a name="line.239"></a>
-<span class="sourceLineNo">240</span> throw new RestException(rc, "Method ''{0}'' not found on resource{1} with matching matcher.", methodUC, onPath);<a name="line.240"></a>
-<span class="sourceLineNo">241</span> else if (rc == SC_METHOD_NOT_ALLOWED)<a name="line.241"></a>
-<span class="sourceLineNo">242</span> throw new RestException(rc, "Method ''{0}'' not found on resource.", methodUC);<a name="line.242"></a>
-<span class="sourceLineNo">243</span> else<a name="line.243"></a>
-<span class="sourceLineNo">244</span> throw new ServletException("Invalid method response: " + rc);<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> * Method for handling response errors.<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 logs the error and calls<a name="line.251"></a>
-<span class="sourceLineNo">252</span> * {@link #renderError(HttpServletRequest,HttpServletResponse,RestException)}.<a name="line.252"></a>
-<span class="sourceLineNo">253</span> *<a name="line.253"></a>
-<span class="sourceLineNo">254</span> * <p><a name="line.254"></a>
-<span class="sourceLineNo">255</span> * Subclasses can override this method to provide their own custom error response handling.<a name="line.255"></a>
-<span class="sourceLineNo">256</span> *<a name="line.256"></a>
-<span class="sourceLineNo">257</span> * @param req The servlet request.<a name="line.257"></a>
-<span class="sourceLineNo">258</span> * @param res The servlet response.<a name="line.258"></a>
-<span class="sourceLineNo">259</span> * @param e The exception that occurred.<a name="line.259"></a>
-<span class="sourceLineNo">260</span> * @throws IOException Can be thrown if a problem occurred trying to write to the output stream.<a name="line.260"></a>
-<span class="sourceLineNo">261</span> */<a name="line.261"></a>
-<span class="sourceLineNo">262</span> protected synchronized void handleError(HttpServletRequest req, HttpServletResponse res, RestException e) throws IOException {<a name="line.262"></a>
-<span class="sourceLineNo">263</span> e.setOccurrence(context == null ? 0 : context.getStackTraceOccurrence(e));<a name="line.263"></a>
-<span class="sourceLineNo">264</span> logger.onError(req, res, e);<a name="line.264"></a>
-<span class="sourceLineNo">265</span> renderError(req, res, e);<a name="line.265"></a>
-<span class="sourceLineNo">266</span> }<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> * Method for rendering response errors.<a name="line.269"></a>
-<span class="sourceLineNo">270</span> *<a name="line.270"></a>
-<span class="sourceLineNo">271</span> * <p><a name="line.271"></a>
-<span class="sourceLineNo">272</span> * The default implementation renders a plain text English message, optionally with a stack trace if<a name="line.272"></a>
-<span class="sourceLineNo">273</span> * {@link RestContext#REST_renderResponseStackTraces} is enabled.<a name="line.273"></a>
-<span class="sourceLineNo">274</span> *<a name="line.274"></a>
-<span class="sourceLineNo">275</span> * <p><a name="line.275"></a>
-<span class="sourceLineNo">276</span> * Subclasses can override this method to provide their own custom error response handling.<a name="line.276"></a>
-<span class="sourceLineNo">277</span> *<a name="line.277"></a>
-<span class="sourceLineNo">278</span> * @param req The servlet request.<a name="line.278"></a>
-<span class="sourceLineNo">279</span> * @param res The servlet response.<a name="line.279"></a>
-<span class="sourceLineNo">280</span> * @param e The exception that occurred.<a name="line.280"></a>
-<span class="sourceLineNo">281</span> * @throws IOException Can be thrown if a problem occurred trying to write to the output stream.<a name="line.281"></a>
-<span class="sourceLineNo">282</span> */<a name="line.282"></a>
-<span class="sourceLineNo">283</span> protected void renderError(HttpServletRequest req, HttpServletResponse res, RestException e) throws IOException {<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span> int status = e.getStatus();<a name="line.285"></a>
-<span class="sourceLineNo">286</span> res.setStatus(status);<a name="line.286"></a>
-<span class="sourceLineNo">287</span> res.setContentType("text/plain");<a name="line.287"></a>
-<span class="sourceLineNo">288</span> res.setHeader("Content-Encoding", "identity");<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span> Throwable t = e.getRootCause();<a name="line.290"></a>
-<span class="sourceLineNo">291</span> if (t != null) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span> res.setHeader("Exception-Name", t.getClass().getName());<a name="line.292"></a>
-<span class="sourceLineNo">293</span> res.setHeader("Exception-Message", t.getMessage());<a name="line.293"></a>
-<span class="sourceLineNo">294</span> }<a name="line.294"></a>
+<span class="sourceLineNo">188</span> r1.setAttribute("Exception", e);<a name="line.188"></a>
+<span class="sourceLineNo">189</span> } catch (Throwable e) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span> RestException e2 = new RestException(SC_INTERNAL_SERVER_ERROR, e);<a name="line.190"></a>
+<span class="sourceLineNo">191</span> handleError(r1, r2, e2);<a name="line.191"></a>
+<span class="sourceLineNo">192</span> r1.setAttribute("Exception", e);<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> context.finishCall(r1, r2);<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span> logger.log(FINE, "HTTP: [{0} {1}] finished in {2}ms", r1.getMethod(), r1.getRequestURI(), System.currentTimeMillis()-startTime);<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> * The main method for serializing POJOs passed in through the {@link RestResponse#setOutput(Object)} method or<a name="line.201"></a>
+<span class="sourceLineNo">202</span> * returned by the Java method.<a name="line.202"></a>
+<span class="sourceLineNo">203</span> *<a name="line.203"></a>
+<span class="sourceLineNo">204</span> * <p><a name="line.204"></a>
+<span class="sourceLineNo">205</span> * Subclasses may override this method if they wish to modify the way the output is rendered or support other output<a name="line.205"></a>
+<span class="sourceLineNo">206</span> * formats.<a name="line.206"></a>
+<span class="sourceLineNo">207</span> *<a name="line.207"></a>
+<span class="sourceLineNo">208</span> * <p><a name="line.208"></a>
+<span class="sourceLineNo">209</span> * The default implementation simply iterates through the response handlers on this resource<a name="line.209"></a>
+<span class="sourceLineNo">210</span> * looking for the first one whose {@link ResponseHandler#handle(RestRequest, RestResponse, Object)} method returns<a name="line.210"></a>
+<span class="sourceLineNo">211</span> * <jk>true</jk>.<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> * @param res The HTTP response.<a name="line.214"></a>
+<span class="sourceLineNo">215</span> * @param output The output to serialize in the response.<a name="line.215"></a>
+<span class="sourceLineNo">216</span> * @throws IOException<a name="line.216"></a>
+<span class="sourceLineNo">217</span> * @throws RestException<a name="line.217"></a>
+<span class="sourceLineNo">218</span> */<a name="line.218"></a>
+<span class="sourceLineNo">219</span> protected void handleResponse(RestRequest req, RestResponse res, Object output) throws IOException, RestException {<a name="line.219"></a>
+<span class="sourceLineNo">220</span> // Loop until we find the correct handler for the POJO.<a name="line.220"></a>
+<span class="sourceLineNo">221</span> for (ResponseHandler h : context.getResponseHandlers())<a name="line.221"></a>
+<span class="sourceLineNo">222</span> if (h.handle(req, res, output))<a name="line.222"></a>
+<span class="sourceLineNo">223</span> return;<a name="line.223"></a>
+<span class="sourceLineNo">224</span> throw new RestException(SC_NOT_IMPLEMENTED, "No response handlers found to process output of type '"+(output == null ? null : output.getClass().getName())+"'");<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> /**<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * Handle the case where a matching method was not found.<a name="line.228"></a>
+<span class="sourceLineNo">229</span> *<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * <p><a name="line.230"></a>
+<span class="sourceLineNo">231</span> * Subclasses can override this method to provide a 2nd-chance for specifying a response.<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * The default implementation will simply throw an exception with an appropriate message.<a name="line.232"></a>
+<span class="sourceLineNo">233</span> *<a name="line.233"></a>
+<span class="sourceLineNo">234</span> * @param rc The HTTP response code.<a name="line.234"></a>
+<span class="sourceLineNo">235</span> * @param req The HTTP request.<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> * @throws Exception<a name="line.237"></a>
+<span class="sourceLineNo">238</span> */<a name="line.238"></a>
+<span class="sourceLineNo">239</span> protected void handleNotFound(int rc, RestRequest req, RestResponse res) throws Exception {<a name="line.239"></a>
+<span class="sourceLineNo">240</span> String pathInfo = req.getPathInfo();<a name="line.240"></a>
+<span class="sourceLineNo">241</span> String methodUC = req.getMethod();<a name="line.241"></a>
+<span class="sourceLineNo">242</span> String onPath = pathInfo == null ? " on no pathInfo" : String.format(" on path '%s'", pathInfo);<a name="line.242"></a>
+<span class="sourceLineNo">243</span> if (rc == SC_NOT_FOUND)<a name="line.243"></a>
+<span class="sourceLineNo">244</span> throw new RestException(rc, "Method ''{0}'' not found on resource with matching pattern{1}.", methodUC, onPath);<a name="line.244"></a>
+<span class="sourceLineNo">245</span> else if (rc == SC_PRECONDITION_FAILED)<a name="line.245"></a>
+<span class="sourceLineNo">246</span> throw new RestException(rc, "Method ''{0}'' not found on resource{1} with matching matcher.", methodUC, onPath);<a name="line.246"></a>
+<span class="sourceLineNo">247</span> else if (rc == SC_METHOD_NOT_ALLOWED)<a name="line.247"></a>
+<span class="sourceLineNo">248</span> throw new RestException(rc, "Method ''{0}'' not found on resource.", methodUC);<a name="line.248"></a>
+<span class="sourceLineNo">249</span> else<a name="line.249"></a>
+<span class="sourceLineNo">250</span> throw new ServletException("Invalid method response: " + rc);<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> * Method for handling response errors.<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> * The default implementation logs the error and calls<a name="line.257"></a>
+<span class="sourceLineNo">258</span> * {@link #renderError(HttpServletRequest,HttpServletResponse,RestException)}.<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> * Subclasses can override this method to provide their own custom error response handling.<a name="line.261"></a>
+<span class="sourceLineNo">262</span> *<a name="line.262"></a>
+<span class="sourceLineNo">263</span> * @param req The servlet request.<a name="line.263"></a>
+<span class="sourceLineNo">264</span> * @param res The servlet response.<a name="line.264"></a>
+<span class="sourceLineNo">265</span> * @param e The exception that occurred.<a name="line.265"></a>
+<span class="sourceLineNo">266</span> * @throws IOException Can be thrown if a problem occurred trying to write to the output stream.<a name="line.266"></a>
+<span class="sourceLineNo">267</span> */<a name="line.267"></a>
+<span class="sourceLineNo">268</span> protected synchronized void handleError(HttpServletRequest req, HttpServletResponse res, RestException e) throws IOException {<a name="line.268"></a>
+<span class="sourceLineNo">269</span> e.setOccurrence(context == null ? 0 : context.getStackTraceOccurrence(e));<a name="line.269"></a>
+<span class="sourceLineNo">270</span> logger.onError(req, res, e);<a name="line.270"></a>
+<span class="sourceLineNo">271</span> renderError(req, res, e);<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> * Method for rendering response errors.<a name="line.275"></a>
+<span class="sourceLineNo">276</span> *<a name="line.276"></a>
+<span class="sourceLineNo">277</span> * <p><a name="line.277"></a>
+<span class="sourceLineNo">278</span> * The default implementation renders a plain text English message, optionally with a stack trace if<a name="line.278"></a>
+<span class="sourceLineNo">279</span> * {@link RestContext#REST_renderResponseStackTraces} is enabled.<a name="line.279"></a>
+<span class="sourceLineNo">280</span> *<a name="line.280"></a>
+<span class="sourceLineNo">281</span> * <p><a name="line.281"></a>
+<span class="sourceLineNo">282</span> * Subclasses can override this method to provide their own custom error response handling.<a name="line.282"></a>
+<span class="sourceLineNo">283</span> *<a name="line.283"></a>
+<span class="sourceLineNo">284</span> * @param req The servlet request.<a name="line.284"></a>
+<span class="sourceLineNo">285</span> * @param res The servlet response.<a name="line.285"></a>
+<span class="sourceLineNo">286</span> * @param e The exception that occurred.<a name="line.286"></a>
+<span class="sourceLineNo">287</span> * @throws IOException Can be thrown if a problem occurred trying to write to the output stream.<a name="line.287"></a>
+<span class="sourceLineNo">288</span> */<a name="line.288"></a>
+<span class="sourceLineNo">289</span> protected void renderError(HttpServletRequest req, HttpServletResponse res, RestException e) throws IOException {<a name="line.289"></a>
+<span class="sourceLineNo">290</span><a name="line.290"></a>
+<span class="sourceLineNo">291</span> int status = e.getStatus();<a name="line.291"></a>
+<span class="sourceLineNo">292</span> res.setStatus(status);<a name="line.292"></a>
+<span class="sourceLineNo">293</span> res.setContentType("text/plain");<a name="line.293"></a>
+<span class="sourceLineNo">294</span> res.setHeader("Content-Encoding", "identity");<a name="line.294"></a>
<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span> PrintWriter w = null;<a name="line.296"></a>
-<span class="sourceLineNo">297</span> try {<a name="line.297"></a>
-<span class="sourceLineNo">298</span> w = res.getWriter();<a name="line.298"></a>
-<span class="sourceLineNo">299</span> } catch (IllegalStateException e2) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span> w = new PrintWriter(new OutputStreamWriter(res.getOutputStream(), UTF8));<a name="line.300"></a>
-<span class="sourceLineNo">301</span> }<a name="line.301"></a>
-<span class="sourceLineNo">302</span> String httpMessage = RestUtils.getHttpResponseText(status);<a name="line.302"></a>
-<span class="sourceLineNo">303</span> if (httpMessage != null)<a name="line.303"></a>
-<span class="sourceLineNo">304</span> w.append("HTTP ").append(String.valueOf(status)).append(": ").append(httpMessage).append("\n\n");<a name="line.304"></a>
-<span class="sourceLineNo">305</span> if (context != null && context.isRenderResponseStackTraces())<a name="line.305"></a>
-<span class="sourceLineNo">306</span> e.printStackTrace(w);<a name="line.306"></a>
-<span class="sourceLineNo">307</span> else<a name="line.307"></a>
-<span class="sourceLineNo">308</span> w.append(e.getFullStackMessage(true));<a name="line.308"></a>
-<span class="sourceLineNo">309</span> w.flush();<a name="line.309"></a>
-<span class="sourceLineNo">310</span> w.close();<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> * Callback method for listening for successful completion of requests.<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> * Subclasses can override this method for gathering performance statistics.<a name="line.317"></a>
-<span class="sourceLineNo">318</span> *<a name="line.318"></a>
-<span class="sourceLineNo">319</span> * <p><a name="line.319"></a>
-<span class="sourceLineNo">320</span> * The default implementation does nothing.<a name="line.320"></a>
+<span class="sourceLineNo">296</span> Throwable t = e.getRootCause();<a name="line.296"></a>
+<span class="sourceLineNo">297</span> if (t != null) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span> res.setHeader("Exception-Name", t.getClass().getName());<a name="line.298"></a>
+<span class="sourceLineNo">299</span> res.setHeader("Exception-Message", t.getMessage());<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> PrintWriter w = null;<a name="line.302"></a>
+<span class="sourceLineNo">303</span> try {<a name="line.303"></a>
+<span class="sourceLineNo">304</span> w = res.getWriter();<a name="line.304"></a>
+<span class="sourceLineNo">305</span> } catch (IllegalStateException e2) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span> w = new PrintWriter(new OutputStreamWriter(res.getOutputStream(), UTF8));<a name="line.306"></a>
+<span class="sourceLineNo">307</span> }<a name="line.307"></a>
+<span class="sourceLineNo">308</span> String httpMessage = RestUtils.getHttpResponseText(status);<a name="line.308"></a>
+<span class="sourceLineNo">309</span> if (httpMessage != null)<a name="line.309"></a>
+<span class="sourceLineNo">310</span> w.append("HTTP ").append(String.valueOf(status)).append(": ").append(httpMessage).append("\n\n");<a name="line.310"></a>
+<span class="sourceLineNo">311</span> if (context != null && context.isRenderResponseStackTraces())<a name="line.311"></a>
+<span class="sourceLineNo">312</span> e.printStackTrace(w);<a name="line.312"></a>
+<span class="sourceLineNo">313</span> else<a name="line.313"></a>
+<span class="sourceLineNo">314</span> w.append(e.getFullStackMessage(true));<a name="line.314"></a>
+<span class="sourceLineNo">315</span> w.flush();<a name="line.315"></a>
+<span class="sourceLineNo">316</span> w.close();<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> /**<a name="line.319"></a>
+<span class="sourceLineNo">320</span> * Returns the session objects for the specified request.<a name="line.320"></a>
<span class="sourceLineNo">321</span> *<a name="line.321"></a>
-<span class="sourceLineNo">322</span> * @param req The HTTP request.<a name="line.322"></a>
-<span class="sourceLineNo">323</span> * @param res The HTTP response.<a name="line.323"></a>
-<span class="sourceLineNo">324</span> * @param time The time in milliseconds it took to process the request.<a name="line.324"></a>
-<span class="sourceLineNo">325</span> */<a name="line.325"></a>
-<span class="sourceLineNo">326</span> protected void onSuccess(RestRequest req, RestResponse res, long time) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span> if (restServlet != null)<a name="line.327"></a>
-<span class="sourceLineNo">328</span> restServlet.onSuccess(req, res, time);<a name="line.328"></a>
-<span class="sourceLineNo">329</span> }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span> /**<a name="line.331"></a>
-<span class="sourceLineNo">332</span> * Callback method that gets invoked right before the REST Java method is invoked.<a name="line.332"></a>
-<span class="sourceLineNo">333</span> *<a name="line.333"></a>
-<span class="sourceLineNo">334</span> * <p><a name="line.334"></a>
-<span class="sourceLineNo">335</span> * Subclasses can override this method to override request headers or set request-duration properties before the<a name="line.335"></a>
-<span class="sourceLineNo">336</span> * Java method is invoked.<a name="line.336"></a>
-<span class="sourceLineNo">337</span> *<a name="line.337"></a>
-<span class="sourceLineNo">338</span> * @param req The HTTP servlet request object.<a name="line.338"></a>
-<span class="sourceLineNo">339</span> * @throws RestException If any error occurs.<a name="line.339"></a>
-<span class="sourceLineNo">340</span> */<a name="line.340"></a>
-<span class="sourceLineNo">341</span> protected void onPreCall(RestRequest req) throws RestException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span> if (restServlet != null)<a name="line.342"></a>
-<span class="sourceLineNo">343</span> restServlet.onPreCall(req);<a name="line.343"></a>
-<span class="sourceLineNo">344</span> }<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> * Callback method that gets invoked right after the REST Java method is invoked, but before the serializer is<a name="line.347"></a>
-<span class="sourceLineNo">348</span> * invoked.<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> * Subclasses can override this method to override request and response headers, or set/override properties used by<a name="line.351"></a>
-<span class="sourceLineNo">352</span> * the serializer.<a name="line.352"></a>
-<span class="sourceLineNo">353</span> *<a name="line.353"></a>
-<span class="sourceLineNo">354</span> * @param req The HTTP servlet request object.<a name="line.354"></a>
-<span class="sourceLineNo">355</span> * @param res The HTTP servlet response object.<a name="line.355"></a>
-<span class="sourceLineNo">356</span> * @throws RestException If any error occurs.<a name="line.356"></a>
-<span class="sourceLineNo">357</span> */<a name="line.357"></a>
-<span class="sourceLineNo">358</span> protected void onPostCall(RestRequest req, RestResponse res) throws RestException {<a name="line.358"></a>
-<span class="sourceLineNo">359</span> if (restServlet != null)<a name="line.359"></a>
-<span class="sourceLineNo">360</span> restServlet.onPostCall(req, res);<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> /**<a name="line.363"></a>
-<span class="sourceLineNo">364</span> * Returns the session objects for the specified request.<a name="line.364"></a>
-<span class="sourceLineNo">365</span> *<a name="line.365"></a>
-<span class="sourceLineNo">366</span> * <p><a name="line.366"></a>
-<span class="sourceLineNo">367</span> * The default implementation simply returns a single map containing <code>{'req':req}</code>.<a name="line.367"></a>
-<span class="sourceLineNo">368</span> *<a name="line.368"></a>
-<span class="sourceLineNo">369</span> * @param req The REST request.<a name="line.369"></a>
-<span class="sourceLineNo">370</span> * @return The session objects for that request.<a name="line.370"></a>
-<span class="sourceLineNo">371</span> */<a name="line.371"></a>
-<span class="sourceLineNo">372</span> public Map<String,Object> getSessionObjects(RestRequest req) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span> Map<String,Object> m = new HashMap<String,Object>();<a name="line.373"></a>
-<span class="sourceLineNo">374</span> m.put(RequestVar.SESSION_req, req);<a name="line.374"></a>
-<span class="sourceLineNo">375</span> return m;<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">322</span> * <p><a name="line.322"></a>
+<span class="sourceLineNo">323</span> * The default implementation simply returns a single map containing <code>{'req':req}</code>.<a name="line.323"></a>
+<span class="sourceLineNo">324</span> *<a name="line.324"></a>
+<span class="sourceLineNo">325</span> * @param req The REST request.<a name="line.325"></a>
+<span class="sourceLineNo">326</span> * @return The session objects for that request.<a name="line.326"></a>
+<span class="sourceLineNo">327</span> */<a name="line.327"></a>
+<span class="sourceLineNo">328</span> public Map<String,Object> getSessionObjects(RestRequest req) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span> Map<String,Object> m = new HashMap<String,Object>();<a name="line.329"></a>
+<span class="sourceLineNo">330</span> m.put(RequestVar.SESSION_req, req);<a name="line.330"></a>
+<span class="sourceLineNo">331</span> return m;<a name="line.331"></a>
+<span class="sourceLineNo">332</span> }<a name="line.332"></a>
+<span class="sourceLineNo">333</span>}<a name="line.333"></a>
[19/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/rest/RestRequest.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RestRequest.html b/content/site/apidocs/org/apache/juneau/rest/RestRequest.html
index 4d08fdf..43fde2a 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestRequest.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestRequest.html
@@ -512,14 +512,14 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<!-- -->
</a>
<h3>Methods inherited from class javax.servlet.http.<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequestWrapper</a></h3>
-<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#authenticate-javax.servlet.http.HttpServletResponse-" title="class or interface in javax.servlet.http">authenticate</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getAuthType--" title="class or interface in javax.servlet.http">getAuthType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getContextPath--" title="class or interface in javax.servlet.http">getContextPath</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getCookies--" title="class or interface in javax.servlet.http">getCookies</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getDateHeader-java.lang.String-" title="class or interface in j
avax.servlet.http">getDateHeader</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getHeaderNames--" title="class or interface in javax.servlet.http">getHeaderNames</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getIntHeader-java.lang.String-" title="class or interface in javax.servlet.http">getIntHeader</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getPart-java.lang.String-" title="class or interface in javax.servlet.http">getPart</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getParts--" title="class or interface in javax.servlet.http">getParts</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getPathInfo--" title="class or interface in javax
.servlet.http">getPathInfo</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getPathTranslated--" title="class or interface in javax.servlet.http">getPathTranslated</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getQueryString--" title="class or interface in javax.servlet.http">getQueryString</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getRemoteUser--" title="class or interface in javax.servlet.http">getRemoteUser</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getRequestedSessionId--" title="class or interface in javax.servlet.http">getRequestedSessionId</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getRequestURI--" title="class or interf
ace in javax.servlet.http">getRequestURI</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getRequestURL--" title="class or interface in javax.servlet.http">getRequestURL</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getServletPath--" title="class or interface in javax.servlet.http">getServletPath</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getSession--" title="class or interface in javax.servlet.http">getSession</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getSession-boolean-" title="class or interface in javax.servlet.http">getSession</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getUserPrincipal--" title="class or interface in javax
.servlet.http">getUserPrincipal</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#isRequestedSessionIdFromCookie--" title="class or interface in javax.servlet.http">isRequestedSessionIdFromCookie</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#isRequestedSessionIdFromUrl--" title="class or interface in javax.servlet.http">isRequestedSessionIdFromUrl</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#isRequestedSessionIdFromURL--" title="class or interface in javax.servlet.http">isRequestedSessionIdFromURL</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#isRequestedSessionIdValid--" title="class or interface in javax.servlet.http">isRequestedSessionIdValid</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet
/http/HttpServletRequestWrapper.html?is-external=true#isUserInRole-java.lang.String-" title="class or interface in javax.servlet.http">isUserInRole</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#login-java.lang.String-java.lang.String-" title="class or interface in javax.servlet.http">login</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#logout--" title="class or interface in javax.servlet.http">logout</a></code></li>
+<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#authenticate-javax.servlet.http.HttpServletResponse-" title="class or interface in javax.servlet.http">authenticate</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#changeSessionId--" title="class or interface in javax.servlet.http">changeSessionId</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getAuthType--" title="class or interface in javax.servlet.http">getAuthType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getContextPath--" title="class or interface in javax.servlet.http">getContextPath</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getCookies--" title="class or interface in javax.serv
let.http">getCookies</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getDateHeader-java.lang.String-" title="class or interface in javax.servlet.http">getDateHeader</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getHeaderNames--" title="class or interface in javax.servlet.http">getHeaderNames</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getIntHeader-java.lang.String-" title="class or interface in javax.servlet.http">getIntHeader</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getPart-java.lang.String-" title="class or interface in javax.servlet.http">getPart</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getParts--" title="class or interfa
ce in javax.servlet.http">getParts</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getPathInfo--" title="class or interface in javax.servlet.http">getPathInfo</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getPathTranslated--" title="class or interface in javax.servlet.http">getPathTranslated</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getQueryString--" title="class or interface in javax.servlet.http">getQueryString</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getRemoteUser--" title="class or interface in javax.servlet.http">getRemoteUser</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getRequestedSessionId--" title="class or interface
in javax.servlet.http">getRequestedSessionId</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getRequestURI--" title="class or interface in javax.servlet.http">getRequestURI</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getRequestURL--" title="class or interface in javax.servlet.http">getRequestURL</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getServletPath--" title="class or interface in javax.servlet.http">getServletPath</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getSession--" title="class or interface in javax.servlet.http">getSession</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getSession-boolean-" title="class or interface in j
avax.servlet.http">getSession</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#getUserPrincipal--" title="class or interface in javax.servlet.http">getUserPrincipal</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#isRequestedSessionIdFromCookie--" title="class or interface in javax.servlet.http">isRequestedSessionIdFromCookie</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#isRequestedSessionIdFromUrl--" title="class or interface in javax.servlet.http">isRequestedSessionIdFromUrl</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#isRequestedSessionIdFromURL--" title="class or interface in javax.servlet.http">isRequestedSessionIdFromURL</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletReq
uestWrapper.html?is-external=true#isRequestedSessionIdValid--" title="class or interface in javax.servlet.http">isRequestedSessionIdValid</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#isUserInRole-java.lang.String-" title="class or interface in javax.servlet.http">isUserInRole</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#login-java.lang.String-java.lang.String-" title="class or interface in javax.servlet.http">login</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#logout--" title="class or interface in javax.servlet.http">logout</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequestWrapper.html?is-external=true#upgrade-java.lang.Class-" title="class or interface in javax.servlet.http">upgrade</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.servlet.ServletRequestWrapper">
<!-- -->
</a>
<h3>Methods inherited from class javax.servlet.<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true" title="class or interface in javax.servlet">ServletRequestWrapper</a></h3>
-<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getAsyncContext--" title="class or interface in javax.servlet">getAsyncContext</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getAttribute-java.lang.String-" title="class or interface in javax.servlet">getAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getAttributeNames--" title="class or interface in javax.servlet">getAttributeNames</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getContentType--" title="class or interface in javax.servlet">getContentType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getDispatcherType--" title="class or interface in javax.servlet">getDispatcherType</a>, <a href="http://docs.oracle.com/javaee/5
/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getLocalAddr--" title="class or interface in javax.servlet">getLocalAddr</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getLocalName--" title="class or interface in javax.servlet">getLocalName</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getLocalPort--" title="class or interface in javax.servlet">getLocalPort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getParameter-java.lang.String-" title="class or interface in javax.servlet">getParameter</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getParameterMap--" title="class or interface in javax.servlet">getParameterMap</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getPara
meterNames--" title="class or interface in javax.servlet">getParameterNames</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getParameterValues-java.lang.String-" title="class or interface in javax.servlet">getParameterValues</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getProtocol--" title="class or interface in javax.servlet">getProtocol</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRealPath-java.lang.String-" title="class or interface in javax.servlet">getRealPath</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRemoteAddr--" title="class or interface in javax.servlet">getRemoteAddr</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRemoteHost--" title="class or interface in j
avax.servlet">getRemoteHost</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRemotePort--" title="class or interface in javax.servlet">getRemotePort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRequest--" title="class or interface in javax.servlet">getRequest</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRequestDispatcher-java.lang.String-" title="class or interface in javax.servlet">getRequestDispatcher</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getScheme--" title="class or interface in javax.servlet">getScheme</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getServerName--" title="class or interface in javax.servlet">getServerName</a>, <a href="http://docs.oracle.com/j
avaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getServerPort--" title="class or interface in javax.servlet">getServerPort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.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/ServletRequestWrapper.html?is-external=true#isAsyncStarted--" title="class or interface in javax.servlet">isAsyncStarted</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#isAsyncSupported--" title="class or interface in javax.servlet">isAsyncSupported</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#isSecure--" title="class or interface in javax.servlet">isSecure</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#isWrap
perFor-java.lang.Class-" title="class or interface in javax.servlet">isWrapperFor</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#isWrapperFor-javax.servlet.ServletRequest-" title="class or interface in javax.servlet">isWrapperFor</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#removeAttribute-java.lang.String-" title="class or interface in javax.servlet">removeAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#setAttribute-java.lang.String-java.lang.Object-" title="class or interface in javax.servlet">setAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#setRequest-javax.servlet.ServletRequest-" title="class or interface in javax.servlet">setRequest</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrappe
r.html?is-external=true#startAsync--" title="class or interface in javax.servlet">startAsync</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#startAsync-javax.servlet.ServletRequest-javax.servlet.ServletResponse-" title="class or interface in javax.servlet">startAsync</a></code></li>
+<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getAsyncContext--" title="class or interface in javax.servlet">getAsyncContext</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getAttribute-java.lang.String-" title="class or interface in javax.servlet">getAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getAttributeNames--" title="class or interface in javax.servlet">getAttributeNames</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getContentLengthLong--" title="class or interface in javax.servlet">getContentLengthLong</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getContentType--" title="class or interface in javax.servlet">getContentType</a>, <a href="http://docs.oracle.com/ja
vaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getDispatcherType--" title="class or interface in javax.servlet">getDispatcherType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getLocalAddr--" title="class or interface in javax.servlet">getLocalAddr</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getLocalName--" title="class or interface in javax.servlet">getLocalName</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getLocalPort--" title="class or interface in javax.servlet">getLocalPort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getParameter-java.lang.String-" title="class or interface in javax.servlet">getParameter</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=tr
ue#getParameterMap--" title="class or interface in javax.servlet">getParameterMap</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getParameterNames--" title="class or interface in javax.servlet">getParameterNames</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getParameterValues-java.lang.String-" title="class or interface in javax.servlet">getParameterValues</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getProtocol--" title="class or interface in javax.servlet">getProtocol</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRealPath-java.lang.String-" title="class or interface in javax.servlet">getRealPath</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRemoteAddr--" title="class or
interface in javax.servlet">getRemoteAddr</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRemoteHost--" title="class or interface in javax.servlet">getRemoteHost</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRemotePort--" title="class or interface in javax.servlet">getRemotePort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRequest--" title="class or interface in javax.servlet">getRequest</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getRequestDispatcher-java.lang.String-" title="class or interface in javax.servlet">getRequestDispatcher</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getScheme--" title="class or interface in javax.servlet">getScheme</a>, <a href="http://doc
s.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getServerName--" title="class or interface in javax.servlet">getServerName</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getServerPort--" title="class or interface in javax.servlet">getServerPort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.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/ServletRequestWrapper.html?is-external=true#isAsyncStarted--" title="class or interface in javax.servlet">isAsyncStarted</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#isAsyncSupported--" title="class or interface in javax.servlet">isAsyncSupported</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html
?is-external=true#isSecure--" title="class or interface in javax.servlet">isSecure</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#isWrapperFor-java.lang.Class-" title="class or interface in javax.servlet">isWrapperFor</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#isWrapperFor-javax.servlet.ServletRequest-" title="class or interface in javax.servlet">isWrapperFor</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#removeAttribute-java.lang.String-" title="class or interface in javax.servlet">removeAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#setAttribute-java.lang.String-java.lang.Object-" title="class or interface in javax.servlet">setAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?i
s-external=true#setRequest-javax.servlet.ServletRequest-" title="class or interface in javax.servlet">setRequest</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#startAsync--" title="class or interface in javax.servlet">startAsync</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#startAsync-javax.servlet.ServletRequest-javax.servlet.ServletResponse-" title="class or interface in javax.servlet">startAsync</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -533,7 +533,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<!-- -->
</a>
<h3>Methods inherited from interface javax.servlet.<a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet">ServletRequest</a></h3>
-<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getAsyncContext--" title="class or interface in javax.servlet">getAsyncContext</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getAttribute-java.lang.String-" title="class or interface in javax.servlet">getAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getAttributeNames--" title="class or interface in javax.servlet">getAttributeNames</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getContentType--" title="class or interface in javax.servlet">getContentType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getDispatcherType--" title="class or interface in javax.servlet">getDispatcherType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.h
tml?is-external=true#getLocalAddr--" title="class or interface in javax.servlet">getLocalAddr</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getLocalName--" title="class or interface in javax.servlet">getLocalName</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getLocalPort--" title="class or interface in javax.servlet">getLocalPort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getParameter-java.lang.String-" title="class or interface in javax.servlet">getParameter</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getParameterMap--" title="class or interface in javax.servlet">getParameterMap</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getParameterNames--" title="class or interface in javax.servlet">getParameterNames</
a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getParameterValues-java.lang.String-" title="class or interface in javax.servlet">getParameterValues</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getProtocol--" title="class or interface in javax.servlet">getProtocol</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getRealPath-java.lang.String-" title="class or interface in javax.servlet">getRealPath</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getRemoteAddr--" title="class or interface in javax.servlet">getRemoteAddr</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getRemoteHost--" title="class or interface in javax.servlet">getRemoteHost</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?
is-external=true#getRemotePort--" title="class or interface in javax.servlet">getRemotePort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getRequestDispatcher-java.lang.String-" title="class or interface in javax.servlet">getRequestDispatcher</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getScheme--" title="class or interface in javax.servlet">getScheme</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getServerName--" title="class or interface in javax.servlet">getServerName</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getServerPort--" title="class or interface in javax.servlet">getServerPort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getServletContext--" title="class or interface in javax.servlet">getServletCon
text</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#isAsyncStarted--" title="class or interface in javax.servlet">isAsyncStarted</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#isAsyncSupported--" title="class or interface in javax.servlet">isAsyncSupported</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#isSecure--" title="class or interface in javax.servlet">isSecure</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#removeAttribute-java.lang.String-" title="class or interface in javax.servlet">removeAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#setAttribute-java.lang.String-java.lang.Object-" title="class or interface in javax.servlet">setAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet
/ServletRequest.html?is-external=true#startAsync--" title="class or interface in javax.servlet">startAsync</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#startAsync-javax.servlet.ServletRequest-javax.servlet.ServletResponse-" title="class or interface in javax.servlet">startAsync</a></code></li>
+<code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getAsyncContext--" title="class or interface in javax.servlet">getAsyncContext</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getAttribute-java.lang.String-" title="class or interface in javax.servlet">getAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getAttributeNames--" title="class or interface in javax.servlet">getAttributeNames</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getContentLengthLong--" title="class or interface in javax.servlet">getContentLengthLong</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getContentType--" title="class or interface in javax.servlet">getContentType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletReq
uest.html?is-external=true#getDispatcherType--" title="class or interface in javax.servlet">getDispatcherType</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getLocalAddr--" title="class or interface in javax.servlet">getLocalAddr</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getLocalName--" title="class or interface in javax.servlet">getLocalName</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getLocalPort--" title="class or interface in javax.servlet">getLocalPort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getParameter-java.lang.String-" title="class or interface in javax.servlet">getParameter</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getParameterMap--" title="class or interface in javax.servlet">getParamete
rMap</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getParameterNames--" title="class or interface in javax.servlet">getParameterNames</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getParameterValues-java.lang.String-" title="class or interface in javax.servlet">getParameterValues</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getProtocol--" title="class or interface in javax.servlet">getProtocol</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getRealPath-java.lang.String-" title="class or interface in javax.servlet">getRealPath</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getRemoteAddr--" title="class or interface in javax.servlet">getRemoteAddr</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servle
tRequest.html?is-external=true#getRemoteHost--" title="class or interface in javax.servlet">getRemoteHost</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getRemotePort--" title="class or interface in javax.servlet">getRemotePort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getRequestDispatcher-java.lang.String-" title="class or interface in javax.servlet">getRequestDispatcher</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getScheme--" title="class or interface in javax.servlet">getScheme</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getServerName--" title="class or interface in javax.servlet">getServerName</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getServerPort--" title="class or interface in javax.servlet">get
ServerPort</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.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/ServletRequest.html?is-external=true#isAsyncStarted--" title="class or interface in javax.servlet">isAsyncStarted</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#isAsyncSupported--" title="class or interface in javax.servlet">isAsyncSupported</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#isSecure--" title="class or interface in javax.servlet">isSecure</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#removeAttribute-java.lang.String-" title="class or interface in javax.servlet">removeAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.h
tml?is-external=true#setAttribute-java.lang.String-java.lang.Object-" title="class or interface in javax.servlet">setAttribute</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#startAsync--" title="class or interface in javax.servlet">startAsync</a>, <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#startAsync-javax.servlet.ServletRequest-javax.servlet.ServletResponse-" title="class or interface in javax.servlet">startAsync</a></code></li>
</ul>
</li>
</ul>
@@ -555,7 +555,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getDescription</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/RestRequest.html#line.213">getDescription</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/RestRequest.html#line.216">getDescription</a>()</pre>
<div class="block">Returns a string of the form <js>"HTTP method-name full-url"</js></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -569,7 +569,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getAttribute</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/RestRequest.html#line.225">getAttribute</a>(<a href="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/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.228">getAttribute</a>(<a href="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> def)</pre>
<div class="block">Same as <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getAttribute-java.lang.String-" title="class or interface in javax.servlet"><code>ServletRequestWrapper.getAttribute(String)</code></a> but returns a default value if not found.</div>
<dl>
@@ -587,7 +587,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>attr</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.237">attr</a>(<a href="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/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.240">attr</a>(<a href="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">Shorthand method for calling <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#setAttribute-java.lang.String-java.lang.Object-" title="class or interface in javax.servlet"><code>ServletRequestWrapper.setAttribute(String, Object)</code></a> fluently.</div>
<dl>
@@ -605,7 +605,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>resolveProperty</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/RestRequest.html#line.303">resolveProperty</a>(org.apache.juneau.rest.CallMethod cm,
+<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/RestRequest.html#line.306">resolveProperty</a>(org.apache.juneau.rest.CallMethod cm,
<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> category,
<a href="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">Resolves the specified property.</div>
@@ -675,7 +675,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<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/RestRequest.html#line.468">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/RestRequest.html#line.471">getProperties</a>()</pre>
<div class="block">Retrieve the properties active for this request.
<p>
@@ -692,7 +692,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>prop</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.479">prop</a>(<a href="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/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.482">prop</a>(<a href="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">Shortcut for calling <code>getProperties().append(name, value);</code> fluently.</div>
<dl>
@@ -710,7 +710,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getHeaders</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.494">getHeaders</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.497">getHeaders</a>()</pre>
<div class="block">Returns the headers on this request.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -724,7 +724,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getHeader</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/RestRequest.html#line.499">getHeader</a>(<a href="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/RestRequest.html#line.502">getHeader</a>(<a href="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>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true#getHeader-java.lang.String-" title="class or interface in javax.servlet.http">getHeader</a></code> in interface <code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a></code></dd>
@@ -739,7 +739,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getHeaders</h4>
-<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Enumeration.html?is-external=true" title="class or interface in java.util">Enumeration</a><<a href="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/RestRequest.html#line.504">getHeaders</a>(<a href="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/util/Enumeration.html?is-external=true" title="class or interface in java.util">Enumeration</a><<a href="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/RestRequest.html#line.507">getHeaders</a>(<a href="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>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true#getHeaders-java.lang.String-" title="class or interface in javax.servlet.http">getHeaders</a></code> in interface <code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html?is-external=true" title="class or interface in javax.servlet.http">HttpServletRequest</a></code></dd>
@@ -754,7 +754,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getSupportedMediaTypes</h4>
-<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><<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/RestRequest.html#line.516">getSupportedMediaTypes</a>()</pre>
+<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><<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/RestRequest.html#line.519">getSupportedMediaTypes</a>()</pre>
<div class="block">Returns the media types that are valid for <code>Content-Type</code> headers on the request.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -768,7 +768,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>setCharacterEncoding</h4>
-<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.524">setCharacterEncoding</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> charset)</pre>
+<pre>public void <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.527">setCharacterEncoding</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> charset)</pre>
<div class="block">Sets the charset to expect on the request body.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -784,7 +784,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getCharacterEncoding</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/RestRequest.html#line.532">getCharacterEncoding</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/RestRequest.html#line.535">getCharacterEncoding</a>()</pre>
<div class="block">Returns the charset specified on the <code>Content-Type</code> header, or <js>"UTF-8"</js> if not specified.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -800,7 +800,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getLocale</h4>
-<pre>public <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> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.552">getLocale</a>()</pre>
+<pre>public <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> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.555">getLocale</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getLocale--" title="class or interface in javax.servlet">getLocale</a></code> in interface <code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet">ServletRequest</a></code></dd>
@@ -815,7 +815,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getLocales</h4>
-<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Enumeration.html?is-external=true" title="class or interface in java.util">Enumeration</a><<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>> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.563">getLocales</a>()</pre>
+<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Enumeration.html?is-external=true" title="class or interface in java.util">Enumeration</a><<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>> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.566">getLocales</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getLocales--" title="class or interface in javax.servlet">getLocales</a></code> in interface <code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet">ServletRequest</a></code></dd>
@@ -830,7 +830,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getQuery</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.594">getQuery</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.597">getQuery</a>()</pre>
<div class="block">Equivalent to <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequestWrapper.html?is-external=true#getParameterMap--" title="class or interface in javax.servlet"><code>ServletRequestWrapper.getParameterMap()</code></a>, but only looks for query parameters in the URL, not form posts.
<p>
@@ -851,7 +851,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getQuery</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/RestRequest.html#line.604">getQuery</a>(<a href="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/RestRequest.html#line.607">getQuery</a>(<a href="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">Shortcut for calling <code>getQuery().getString(name)</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -867,7 +867,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getFormData</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RequestFormData.html" title="class in org.apache.juneau.rest">RequestFormData</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.618">getFormData</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RequestFormData.html" title="class in org.apache.juneau.rest">RequestFormData</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.621">getFormData</a>()</pre>
<div class="block">Retrieves the URL-encoded form data from the request if the body has already been cached locally.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -881,7 +881,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getFormData</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/RestRequest.html#line.645">getFormData</a>(<a href="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/RestRequest.html#line.648">getFormData</a>(<a href="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">Shortcut for calling <code>getFormData().getString(name)</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -897,7 +897,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getPathMatch</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RequestPathMatch.html" title="class in org.apache.juneau.rest">RequestPathMatch</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.659">getPathMatch</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RequestPathMatch.html" title="class in org.apache.juneau.rest">RequestPathMatch</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.662">getPathMatch</a>()</pre>
<div class="block">Retrieves the URL-encoded form data from the request if the body has already been cached locally.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -911,7 +911,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<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/RestRequest.html#line.669">getPath</a>(<a href="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/RestRequest.html#line.672">getPath</a>(<a href="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">Shortcut for calling <code>getPathMatch().get(name)</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -927,7 +927,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getBody</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/RequestBody.html" title="class in org.apache.juneau.rest">RequestBody</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.682">getBody</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/rest/RequestBody.html" title="class in org.apache.juneau.rest">RequestBody</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.685">getBody</a>()</pre>
<div class="block">Returns the body of this HTTP request.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -941,7 +941,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getReader</h4>
-<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html?is-external=true" title="class or interface in java.io">BufferedReader</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.697">getReader</a>()
+<pre>public <a href="http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html?is-external=true" title="class or interface in java.io">BufferedReader</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.700">getReader</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">Returns the HTTP body content as a <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io"><code>Reader</code></a>.
@@ -967,7 +967,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getInputStream</h4>
-<pre>public <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletInputStream.html?is-external=true" title="class or interface in javax.servlet">ServletInputStream</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.711">getInputStream</a>()
+<pre>public <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletInputStream.html?is-external=true" title="class or interface in javax.servlet">ServletInputStream</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.714">getInputStream</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">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>.
@@ -991,7 +991,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getUriContext</h4>
-<pre>public <a href="../../../../org/apache/juneau/UriContext.html" title="class in org.apache.juneau">UriContext</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.733">getUriContext</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/UriContext.html" title="class in org.apache.juneau">UriContext</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.736">getUriContext</a>()</pre>
<div class="block">Returns the URI context of the request.
<p>
@@ -1009,7 +1009,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getUriResolver</h4>
-<pre>public <a href="../../../../org/apache/juneau/UriResolver.html" title="class in org.apache.juneau">UriResolver</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.752">getUriResolver</a>(<a href="../../../../org/apache/juneau/UriResolution.html" title="enum in org.apache.juneau">UriResolution</a> resolution,
+<pre>public <a href="../../../../org/apache/juneau/UriResolver.html" title="class in org.apache.juneau">UriResolver</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.755">getUriResolver</a>(<a href="../../../../org/apache/juneau/UriResolution.html" title="enum in org.apache.juneau">UriResolution</a> resolution,
<a href="../../../../org/apache/juneau/UriRelativity.html" title="enum in org.apache.juneau">UriRelativity</a> relativity)</pre>
<div class="block">Returns a URI resolver that can be used to convert URIs to absolute or root-relative form.</div>
<dl>
@@ -1027,7 +1027,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getUriResolver</h4>
-<pre>public <a href="../../../../org/apache/juneau/UriResolver.html" title="class in org.apache.juneau">UriResolver</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.762">getUriResolver</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/UriResolver.html" title="class in org.apache.juneau">UriResolver</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.765">getUriResolver</a>()</pre>
<div class="block">Shortcut for calling <a href="../../../../org/apache/juneau/rest/RestRequest.html#getUriResolver--"><code>getUriResolver()</code></a> using <a href="../../../../org/apache/juneau/UriResolution.html#ROOT_RELATIVE"><code>UriResolution.ROOT_RELATIVE</code></a> and
<a href="../../../../org/apache/juneau/UriRelativity.html#RESOURCE"><code>UriRelativity.RESOURCE</code></a></div>
<dl>
@@ -1042,7 +1042,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<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/rest/RestRequest.html#line.778">getUri</a>(boolean includeQuery,
+<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/rest/RestRequest.html#line.781">getUri</a>(boolean includeQuery,
<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>,?> addQueryParams)</pre>
<div class="block">Returns the URI for this request.
@@ -1065,7 +1065,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getSiteName</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/RestRequest.html#line.825">getSiteName</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/RestRequest.html#line.828">getSiteName</a>()</pre>
<div class="block">Returns the localized site name.
<p>
@@ -1097,7 +1097,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getServletTitle</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/RestRequest.html#line.837">getServletTitle</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/RestRequest.html#line.840">getServletTitle</a>()</pre>
<div class="block">Returns the localized servlet title.
<p>
@@ -1114,7 +1114,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getServletDescription</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/RestRequest.html#line.849">getServletDescription</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/RestRequest.html#line.852">getServletDescription</a>()</pre>
<div class="block">Returns the localized servlet description.
<p>
@@ -1131,7 +1131,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getMethodSummary</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/RestRequest.html#line.861">getMethodSummary</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/RestRequest.html#line.864">getMethodSummary</a>()</pre>
<div class="block">Returns the localized method summary.
<p>
@@ -1148,7 +1148,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getMethodDescription</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/RestRequest.html#line.873">getMethodDescription</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/RestRequest.html#line.876">getMethodDescription</a>()</pre>
<div class="block">Returns the localized method description.
<p>
@@ -1165,7 +1165,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getStylesheet</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/RestRequest.html#line.886">getStylesheet</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/RestRequest.html#line.889">getStylesheet</a>()</pre>
<div class="block">Returns the value of the <jk>"stylesheet"</js> parameter.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1179,7 +1179,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getSerializerGroup</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/RestRequest.html#line.895">getSerializerGroup</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/RestRequest.html#line.898">getSerializerGroup</a>()</pre>
<div class="block">Returns the serializers associated with this request.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1193,7 +1193,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getParserGroup</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/RestRequest.html#line.904">getParserGroup</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/RestRequest.html#line.907">getParserGroup</a>()</pre>
<div class="block">Returns the parsers associated with this request.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1207,7 +1207,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getMethod</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/RestRequest.html#line.917">getMethod</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/RestRequest.html#line.920">getMethod</a>()</pre>
<div class="block">Returns the method of this request.
<p>
@@ -1227,7 +1227,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getHttpMethod</h4>
-<pre>public <a href="../../../../org/apache/juneau/http/HttpMethod.html" title="enum in org.apache.juneau.http">HttpMethod</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.929">getHttpMethod</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/http/HttpMethod.html" title="enum in org.apache.juneau.http">HttpMethod</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.932">getHttpMethod</a>()</pre>
<div class="block">Returns the HTTP 1.1 method name of the request as an enum.
<p>
@@ -1244,7 +1244,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getContentLength</h4>
-<pre>public int <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.934">getContentLength</a>()</pre>
+<pre>public int <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.937">getContentLength</a>()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true#getContentLength--" title="class or interface in javax.servlet">getContentLength</a></code> in interface <code><a href="http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html?is-external=true" title="class or interface in javax.servlet">ServletRequest</a></code></dd>
@@ -1259,7 +1259,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>isPlainText</h4>
-<pre>public boolean <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.954">isPlainText</a>()</pre>
+<pre>public boolean <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.957">isPlainText</a>()</pre>
<div class="block">Returns <jk>true</jk> if <code>&plainText=true</code> was specified as a URL parameter.
<p>
@@ -1280,7 +1280,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getMessage</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/RestRequest.html#line.965">getMessage</a>(<a href="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="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/RestRequest.html#line.968">getMessage</a>(<a href="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>... args)</pre>
<div class="block">Shortcut method for calling <a href="../../../../org/apache/juneau/utils/MessageBundle.html#getString-java.util.Locale-java.lang.String-java.lang.Object...-"><code>MessageBundle.getString(Locale, String, Object...)</code></a> based on the request locale.</div>
<dl>
@@ -1298,7 +1298,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getResourceBundle</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/RestRequest.html#line.974">getResourceBundle</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/RestRequest.html#line.977">getResourceBundle</a>()</pre>
<div class="block">Returns the resource bundle for the request locale.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1312,7 +1312,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getContext</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/RestRequest.html#line.987">getContext</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/RestRequest.html#line.990">getContext</a>()</pre>
<div class="block">Returns the servlet handling the request.
<p>
@@ -1330,7 +1330,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getJavaMethod</h4>
-<pre>public <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> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1006">getJavaMethod</a>()</pre>
+<pre>public <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> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1009">getJavaMethod</a>()</pre>
<div class="block">Returns the java method handling the request.
<p>
@@ -1354,7 +1354,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getBeanSession</h4>
-<pre>public <a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1015">getBeanSession</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1018">getBeanSession</a>()</pre>
<div class="block">Returns the <a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau"><code>BeanSession</code></a> associated with this request.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1368,7 +1368,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getVarResolverSession</h4>
-<pre>public <a href="../../../../org/apache/juneau/svl/VarResolverSession.html" title="class in org.apache.juneau.svl">VarResolverSession</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1028">getVarResolverSession</a>()</pre>
+<pre>public <a href="../../../../org/apache/juneau/svl/VarResolverSession.html" title="class in org.apache.juneau.svl">VarResolverSession</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1031">getVarResolverSession</a>()</pre>
<div class="block">Returns the variable resolver session for this request using session objects created by
<a href="../../../../org/apache/juneau/rest/RestCallHandler.html#getSessionObjects-org.apache.juneau.rest.RestRequest-"><code>RestCallHandler.getSessionObjects(RestRequest)</code></a>.
@@ -1386,7 +1386,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>resolveVars</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/RestRequest.html#line.1040">resolveVars</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> input)</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/RestRequest.html#line.1043">resolveVars</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> input)</pre>
<div class="block">Shortcut for calling <code>getVarResolverSession().resolve(input)</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
@@ -1402,7 +1402,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getReaderResource</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/ReaderResource.html" title="class in org.apache.juneau.rest">ReaderResource</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1057">getReaderResource</a>(<a href="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/ReaderResource.html" title="class in org.apache.juneau.rest">ReaderResource</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1060">getReaderResource</a>(<a href="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 resolveVars,
<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a> mediaType)
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>
@@ -1428,7 +1428,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getReaderResource</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/ReaderResource.html" title="class in org.apache.juneau.rest">ReaderResource</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1079">getReaderResource</a>(<a href="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/ReaderResource.html" title="class in org.apache.juneau.rest">ReaderResource</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1082">getReaderResource</a>(<a href="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 resolveVars)
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/rest/RestRequest.html#getReaderResource-java.lang.String-boolean-org.apache.juneau.http.MediaType-"><code>getReaderResource(String, boolean, MediaType)</code></a> except uses the resource mime-type map
@@ -1452,7 +1452,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getReaderResource</h4>
-<pre>public <a href="../../../../org/apache/juneau/rest/ReaderResource.html" title="class in org.apache.juneau.rest">ReaderResource</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1090">getReaderResource</a>(<a href="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/ReaderResource.html" title="class in org.apache.juneau.rest">ReaderResource</a> <a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.1093">getReaderResource</a>(<a href="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)
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/rest/RestRequest.html#getReaderResource-java.lang.String-boolean-"><code>getReaderResource(String, boolean)</code></a> with <code>resolveVars == <jk>false</jk></code></div>
<dl>
@@ -1471,7 +1471,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<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/RestRequest.html#line.1101">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/RestRequest.html#line.1104">getConfigFile</a>()</pre>
<div class="block">Returns the config file associated with the servlet.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1486,7 +1486,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class="blockList">
<li class="blockList">
<h4>getSwagger</h4>
-<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/RestRequest.html#line.1114">getSwagger</a>()</pre>
+<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/RestRequest.html#line.1117">getSwagger</a>()</pre>
<div class="block">Returns the localized swagger associated with the servlet.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -1501,7 +1501,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
<ul class=
<TRUNCATED>
[05/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 3e65265..5565a6b 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
@@ -37,1772 +37,2004 @@
<span class="sourceLineNo">029</span><a name="line.29"></a>
<span class="sourceLineNo">030</span>import javax.activation.*;<a name="line.30"></a>
<span class="sourceLineNo">031</span>import javax.servlet.*;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.juneau.*;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.juneau.encoders.*;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.juneau.html.*;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.juneau.http.*;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.juneau.ini.*;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.juneau.internal.*;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.juneau.json.*;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.juneau.parser.*;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.juneau.rest.annotation.*;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.juneau.rest.annotation.Properties;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.juneau.rest.vars.*;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.juneau.rest.widget.*;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.juneau.serializer.*;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.juneau.svl.*;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.juneau.svl.vars.*;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.juneau.urlencoding.*;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.juneau.utils.*;<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> * Contains all the configuration on a REST resource and the entry points for handling REST calls.<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * <p><a name="line.54"></a>
-<span class="sourceLineNo">055</span> * See {@link PropertyStore} for more information about context properties.<a name="line.55"></a>
-<span class="sourceLineNo">056</span> */<a name="line.56"></a>
-<span class="sourceLineNo">057</span>public final class RestContext extends Context {<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> * <b>Configuration property:</b> Enable header URL parameters.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> *<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * <ul><a name="line.62"></a>
-<span class="sourceLineNo">063</span> * <li><b>Name:</b> <js>"RestServlet.allowHeaderParams"</js><a name="line.63"></a>
-<span class="sourceLineNo">064</span> * <li><b>Data type:</b> <code>Boolean</code><a name="line.64"></a>
-<span class="sourceLineNo">065</span> * <li><b>Default:</b> <jk>true</jk><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> * <p><a name="line.68"></a>
-<span class="sourceLineNo">069</span> * When enabled, headers such as <js>"Accept"</js> and <js>"Content-Type"</js> to be passed in as URL query<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * parameters.<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * For example: <js>"?Accept=text/json&amp;Content-Type=text/json"</js><a name="line.71"></a>
-<span class="sourceLineNo">072</span> *<a name="line.72"></a>
-<span class="sourceLineNo">073</span> * <p><a name="line.73"></a>
-<span class="sourceLineNo">074</span> * Parameter names are case-insensitive.<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> * Useful for debugging REST interface using only a browser.<a name="line.77"></a>
-<span class="sourceLineNo">078</span> *<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * <p><a name="line.79"></a>
-<span class="sourceLineNo">080</span> * Applicable to servlet class only.<a name="line.80"></a>
-<span class="sourceLineNo">081</span> */<a name="line.81"></a>
-<span class="sourceLineNo">082</span> public static final String REST_allowHeaderParams = "RestServlet.allowHeaderParams";<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> * <b>Configuration property:</b> Enable <js>"method"</js> URL parameter for specific HTTP methods.<a name="line.85"></a>
-<span class="sourceLineNo">086</span> *<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * <ul><a name="line.87"></a>
-<span class="sourceLineNo">088</span> * <li><b>Name:</b> <js>"RestServlet.allowMethodParam"</js><a name="line.88"></a>
-<span class="sourceLineNo">089</span> * <li><b>Data type:</b> <code>String</code><a name="line.89"></a>
-<span class="sourceLineNo">090</span> * <li><b>Default:</b> <js>""</js><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> * <p><a name="line.93"></a>
-<span class="sourceLineNo">094</span> * When specified, the HTTP method can be overridden by passing in a <js>"method"</js> URL parameter on a regular<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * GET request.<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * For example: <js>"?method=OPTIONS"</js><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> * Format is a comma-delimited list of HTTP method names that can be passed in as a method parameter.<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * Parameter name is case-insensitive.<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * Use "*" to represent all methods.<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * For backwards compatibility, "true" also means "*".<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * <p><a name="line.104"></a>
-<span class="sourceLineNo">105</span> * Note that per the <a class="doclink"<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html">HTTP specification</a>, special care should<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * be taken when allowing non-safe (POST, PUT, DELETE) methods to be invoked through GET requests.<a name="line.107"></a>
-<span class="sourceLineNo">108</span> *<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * <p><a name="line.109"></a>
-<span class="sourceLineNo">110</span> * Applicable to servlet class only.<a name="line.110"></a>
-<span class="sourceLineNo">111</span> *<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * <p><a name="line.112"></a>
-<span class="sourceLineNo">113</span> * Example: <js>"HEAD,OPTIONS"</js><a name="line.113"></a>
-<span class="sourceLineNo">114</span> */<a name="line.114"></a>
-<span class="sourceLineNo">115</span> public static final String REST_allowMethodParam = "RestServlet.allowMethodParam";<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> * <b>Configuration property:</b> Enable <js>"body"</js> URL parameter.<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * <ul><a name="line.120"></a>
-<span class="sourceLineNo">121</span> * <li><b>Name:</b> <js>"RestServlet.allowBodyParam"</js><a name="line.121"></a>
-<span class="sourceLineNo">122</span> * <li><b>Data type:</b> <code>Boolean</code><a name="line.122"></a>
-<span class="sourceLineNo">123</span> * <li><b>Default:</b> <jk>true</jk><a name="line.123"></a>
-<span class="sourceLineNo">124</span> * </ul><a name="line.124"></a>
-<span class="sourceLineNo">125</span> *<a name="line.125"></a>
-<span class="sourceLineNo">126</span> * <p><a name="line.126"></a>
-<span class="sourceLineNo">127</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.127"></a>
-<span class="sourceLineNo">128</span> * URL parameter.<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * For example: <js>"?body={name:'John%20Smith',age:45}"</js><a name="line.129"></a>
-<span class="sourceLineNo">130</span> *<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * <p><a name="line.131"></a>
-<span class="sourceLineNo">132</span> * Parameter name is case-insensitive.<a name="line.132"></a>
-<span class="sourceLineNo">133</span> *<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * <p><a name="line.134"></a>
-<span class="sourceLineNo">135</span> * Useful for debugging PUT and POST methods using only a browser.<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> * Applicable to servlet class only.<a name="line.138"></a>
-<span class="sourceLineNo">139</span> */<a name="line.139"></a>
-<span class="sourceLineNo">140</span> public static final String REST_allowBodyParam = "RestServlet.allowBodyParam";<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> * <b>Configuration property:</b> Render stack traces.<a name="line.143"></a>
-<span class="sourceLineNo">144</span> *<a name="line.144"></a>
-<span class="sourceLineNo">145</span> * <ul><a name="line.145"></a>
-<span class="sourceLineNo">146</span> * <li><b>Name:</b> <js>"RestServlet.renderResponseStackTraces"</js><a name="line.146"></a>
-<span class="sourceLineNo">147</span> * <li><b>Data type:</b> <code>Boolean</code><a name="line.147"></a>
-<span class="sourceLineNo">148</span> * <li><b>Default:</b> <jk>false</jk><a name="line.148"></a>
-<span class="sourceLineNo">149</span> * </ul><a name="line.149"></a>
-<span class="sourceLineNo">150</span> *<a name="line.150"></a>
-<span class="sourceLineNo">151</span> * <p><a name="line.151"></a>
-<span class="sourceLineNo">152</span> * Render stack traces in HTTP response bodies when errors occur.<a name="line.152"></a>
-<span class="sourceLineNo">153</span> *<a name="line.153"></a>
-<span class="sourceLineNo">154</span> * <p><a name="line.154"></a>
-<span class="sourceLineNo">155</span> * When enabled, Java stack traces will be rendered in the output response.<a name="line.155"></a>
-<span class="sourceLineNo">156</span> * Useful for debugging, although allowing stack traces to be rendered may cause security concerns.<a name="line.156"></a>
-<span class="sourceLineNo">157</span> *<a name="line.157"></a>
-<span class="sourceLineNo">158</span> * <p><a name="line.158"></a>
-<span class="sourceLineNo">159</span> * Applicable to servlet class only.<a name="line.159"></a>
-<span class="sourceLineNo">160</span> */<a name="line.160"></a>
-<span class="sourceLineNo">161</span> public static final String REST_renderResponseStackTraces = "RestServlet.renderResponseStackTraces";<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> * <b>Configuration property:</b> Use stack trace hashes.<a name="line.164"></a>
-<span class="sourceLineNo">165</span> *<a name="line.165"></a>
-<span class="sourceLineNo">166</span> * <ul><a name="line.166"></a>
-<span class="sourceLineNo">167</span> * <li><b>Name:</b> <js>"RestServlet.useStackTraceHashes"</js><a name="line.167"></a>
-<span class="sourceLineNo">168</span> * <li><b>Data type:</b> <code>Boolean</code><a name="line.168"></a>
-<span class="sourceLineNo">169</span> * <li><b>Default:</b> <jk>true</jk><a name="line.169"></a>
-<span class="sourceLineNo">170</span> * </ul><a name="line.170"></a>
-<span class="sourceLineNo">171</span> *<a name="line.171"></a>
-<span class="sourceLineNo">172</span> * <p><a name="line.172"></a>
-<span class="sourceLineNo">173</span> * When enabled, the number of times an exception has occurred will be determined based on stack trace hashsums,<a name="line.173"></a>
-<span class="sourceLineNo">174</span> * made available through the {@link RestException#getOccurrence()} method.<a name="line.174"></a>
-<span class="sourceLineNo">175</span> *<a name="line.175"></a>
-<span class="sourceLineNo">176</span> * <p><a name="line.176"></a>
-<span class="sourceLineNo">177</span> * Applicable to servlet class only.<a name="line.177"></a>
-<span class="sourceLineNo">178</span> */<a name="line.178"></a>
-<span class="sourceLineNo">179</span> public static final String REST_useStackTraceHashes = "RestServlet.useStackTraceHashes";<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> * <b>Configuration property:</b> Default character encoding.<a name="line.182"></a>
-<span class="sourceLineNo">183</span> *<a name="line.183"></a>
-<span class="sourceLineNo">184</span> * <ul><a name="line.184"></a>
-<span class="sourceLineNo">185</span> * <li><b>Name:</b> <js>"RestServlet.defaultCharset"</js><a name="line.185"></a>
-<span class="sourceLineNo">186</span> * <li><b>Data type:</b> <code>String</code><a name="line.186"></a>
-<span class="sourceLineNo">187</span> * <li><b>Default:</b> <js>"utf-8"</js><a name="line.187"></a>
-<span class="sourceLineNo">188</span> * </ul><a name="line.188"></a>
-<span class="sourceLineNo">189</span> *<a name="line.189"></a>
-<span class="sourceLineNo">190</span> * <p><a name="line.190"></a>
-<span class="sourceLineNo">191</span> * The default character encoding for the request and response if not specified on the request.<a name="line.191"></a>
-<span class="sourceLineNo">192</span> *<a name="line.192"></a>
-<span class="sourceLineNo">193</span> * <p><a name="line.193"></a>
-<span class="sourceLineNo">194</span> * Applicable to servlet class and methods.<a name="line.194"></a>
-<span class="sourceLineNo">195</span> */<a name="line.195"></a>
-<span class="sourceLineNo">196</span> public static final String REST_defaultCharset = "RestServlet.defaultCharset";<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span> /**<a name="line.198"></a>
-<span class="sourceLineNo">199</span> * <b>Configuration property:</b> Expected format of request parameters.<a name="line.199"></a>
-<span class="sourceLineNo">200</span> *<a name="line.200"></a>
-<span class="sourceLineNo">201</span> * <ul><a name="line.201"></a>
-<span class="sourceLineNo">202</span> * <li><b>Name:</b> <js>"RestServlet.paramFormat"</js><a name="line.202"></a>
-<span class="sourceLineNo">203</span> * <li><b>Data type:</b> <code>String</code><a name="line.203"></a>
-<span class="sourceLineNo">204</span> * <li><b>Default:</b> <js>"UON"</js><a name="line.204"></a>
-<span class="sourceLineNo">205</span> * </ul><a name="line.205"></a>
-<span class="sourceLineNo">206</span> * <p><a name="line.206"></a>
-<span class="sourceLineNo">207</span> * Possible values:<a name="line.207"></a>
-<span class="sourceLineNo">208</span> * <ul class='spaced-list'><a name="line.208"></a>
-<span class="sourceLineNo">209</span> * <li><a name="line.209"></a>
-<span class="sourceLineNo">210</span> * <js>"UON"</js> - URL-Encoded Object Notation.<a name="line.210"></a>
-<span class="sourceLineNo">211</span> * <br>This notation allows for request parameters to contain arbitrarily complex POJOs.<a name="line.211"></a>
-<span class="sourceLineNo">212</span> * <li><a name="line.212"></a>
-<span class="sourceLineNo">213</span> * <js>"PLAIN"</js> - Plain text.<a name="line.213"></a>
-<span class="sourceLineNo">214</span> * <br>This treats request parameters as plain text.<a name="line.214"></a>
-<span class="sourceLineNo">215</span> * <br>Only POJOs directly convertible from <l>Strings</l> can be represented in parameters when using this<a name="line.215"></a>
-<span class="sourceLineNo">216</span> * mode.<a name="line.216"></a>
-<span class="sourceLineNo">217</span> * </ul><a name="line.217"></a>
-<span class="sourceLineNo">218</span> *<a name="line.218"></a>
-<span class="sourceLineNo">219</span> * <p><a name="line.219"></a>
-<span class="sourceLineNo">220</span> * Note that the parameter value <js>"(foo)"</js> is interpreted as <js>"(foo)"</js> when using plain mode, but<a name="line.220"></a>
-<span class="sourceLineNo">221</span> * <js>"foo"</js> when using UON mode.<a name="line.221"></a>
-<span class="sourceLineNo">222</span> *<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * <p><a name="line.223"></a>
-<span class="sourceLineNo">224</span> * The format can also be specified per-parameter using the {@link FormData#format() @FormData.format()} and<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * {@link Query#format() @Query.format()} annotations.<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> * Applicable to servlet class and methods.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> */<a name="line.229"></a>
-<span class="sourceLineNo">230</span> public static final String REST_paramFormat = "RestServlet.paramFormat";<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> * <b>Configuration property:</b> REST resource resolver.<a name="line.233"></a>
-<span class="sourceLineNo">234</span> *<a name="line.234"></a>
-<span class="sourceLineNo">235</span> * <ul><a name="line.235"></a>
-<span class="sourceLineNo">236</span> * <li><b>Name:</b> <js>"RestServlet.resourceResolver"</js><a name="line.236"></a>
-<span class="sourceLineNo">237</span> * <li><b>Data type:</b> <code>Class</code> or {@link RestResourceResolver}<a name="line.237"></a>
-<span class="sourceLineNo">238</span> * <li><b>Default:</b> <jk>null</jk><a name="line.238"></a>
-<span class="sourceLineNo">239</span> * </ul><a name="line.239"></a>
-<span class="sourceLineNo">240</span> *<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * <p><a name="line.241"></a>
-<span class="sourceLineNo">242</span> * The resource resolver used to instantiate REST resource classes.<a name="line.242"></a>
-<span class="sourceLineNo">243</span> *<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * <p><a name="line.244"></a>
-<span class="sourceLineNo">245</span> * Applicable to servlet class.<a name="line.245"></a>
-<span class="sourceLineNo">246</span> * <br>Can be passed in through servlet context.<a name="line.246"></a>
-<span class="sourceLineNo">247</span> */<a name="line.247"></a>
-<span class="sourceLineNo">248</span> public static final String REST_resourceResolver = "RestServlet.resourceResolver";<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">032</span>import javax.servlet.http.*;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.juneau.*;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.juneau.encoders.*;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.juneau.html.*;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.juneau.http.*;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.juneau.ini.*;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.juneau.internal.*;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.juneau.json.*;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.juneau.parser.*;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.juneau.rest.annotation.*;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.juneau.rest.annotation.Properties;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.juneau.rest.vars.*;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.juneau.rest.widget.*;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.juneau.serializer.*;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.juneau.svl.*;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.juneau.svl.vars.*;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.juneau.urlencoding.*;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.juneau.utils.*;<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> * Contains all the configuration on a REST resource and the entry points for handling REST calls.<a name="line.53"></a>
+<span class="sourceLineNo">054</span> *<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * <p><a name="line.55"></a>
+<span class="sourceLineNo">056</span> * See {@link PropertyStore} for more information about context properties.<a name="line.56"></a>
+<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> private final Object resource;<a name="line.251"></a>
-<span class="sourceLineNo">252</span> private final RestConfig config;<a name="line.252"></a>
-<span class="sourceLineNo">253</span> private final boolean<a name="line.253"></a>
-<span class="sourceLineNo">254</span> allowHeaderParams,<a name="line.254"></a>
-<span class="sourceLineNo">255</span> allowBodyParam,<a name="line.255"></a>
-<span class="sourceLineNo">256</span> renderResponseStackTraces,<a name="line.256"></a>
-<span class="sourceLineNo">257</span> useStackTraceHashes;<a name="line.257"></a>
-<span class="sourceLineNo">258</span> private final String<a name="line.258"></a>
-<span class="sourceLineNo">259</span> defaultCharset,<a name="line.259"></a>
-<span class="sourceLineNo">260</span> paramFormat,<a name="line.260"></a>
-<span class="sourceLineNo">261</span> clientVersionHeader,<a name="line.261"></a>
-<span class="sourceLineNo">262</span> fullPath,<a name="line.262"></a>
-<span class="sourceLineNo">263</span> htmlHeader,<a name="line.263"></a>
-<span class="sourceLineNo">264</span> htmlNav,<a name="line.264"></a>
-<span class="sourceLineNo">265</span> htmlAside,<a name="line.265"></a>
-<span class="sourceLineNo">266</span> htmlStyle,<a name="line.266"></a>
-<span class="sourceLineNo">267</span> htmlStylesheet,<a name="line.267"></a>
-<span class="sourceLineNo">268</span> htmlScript,<a name="line.268"></a>
-<span class="sourceLineNo">269</span> htmlFooter,<a name="line.269"></a>
-<span class="sourceLineNo">270</span> htmlNoResultsMessage;<a name="line.270"></a>
-<span class="sourceLineNo">271</span> private final String[]<a name="line.271"></a>
-<span class="sourceLineNo">272</span> htmlLinks;<a name="line.272"></a>
-<span class="sourceLineNo">273</span> private final boolean htmlNoWrap;<a name="line.273"></a>
-<span class="sourceLineNo">274</span> private final HtmlDocTemplate htmlTemplate;<a name="line.274"></a>
-<span class="sourceLineNo">275</span> private final Map<String,Widget> htmlWidgets;<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span> private final Set<String> allowMethodParams;<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span> private final ObjectMap properties;<a name="line.279"></a>
-<span class="sourceLineNo">280</span> private final Class<?>[]<a name="line.280"></a>
-<span class="sourceLineNo">281</span> beanFilters,<a name="line.281"></a>
-<span class="sourceLineNo">282</span> pojoSwaps;<a name="line.282"></a>
-<span class="sourceLineNo">283</span> private final Map<Class<?>,RestParam> paramResolvers;<a name="line.283"></a>
-<span class="sourceLineNo">284</span> private final SerializerGroup serializers;<a name="line.284"></a>
-<span class="sourceLineNo">285</span> private final ParserGroup parsers;<a name="line.285"></a>
-<span class="sourceLineNo">286</span> private final UrlEncodingSerializer urlEncodingSerializer;<a name="line.286"></a>
-<span class="sourceLineNo">287</span> private final UrlEncodingParser urlEncodingParser;<a name="line.287"></a>
-<span class="sourceLineNo">288</span> private final EncoderGroup encoders;<a name="line.288"></a>
-<span class="sourceLineNo">289</span> private final MediaType[]<a name="line.289"></a>
-<span class="sourceLineNo">290</span> supportedContentTypes,<a name="line.290"></a>
-<span class="sourceLineNo">291</span> supportedAcceptTypes;<a name="line.291"></a>
-<span class="sourceLineNo">292</span> private final Map<String,String> defaultRequestHeaders;<a name="line.292"></a>
-<span class="sourceLineNo">293</span> private final Map<String,Object> defaultResponseHeaders;<a name="line.293"></a>
-<span class="sourceLineNo">294</span> private final BeanContext beanContext;<a name="line.294"></a>
-<span class="sourceLineNo">295</span> private final RestConverter[] converters;<a name="line.295"></a>
-<span class="sourceLineNo">296</span> private final RestGuard[] guards;<a name="line.296"></a>
-<span class="sourceLineNo">297</span> private final ResponseHandler[] responseHandlers;<a name="line.297"></a>
-<span class="sourceLineNo">298</span> private final MimetypesFileTypeMap mimetypesFileTypeMap;<a name="line.298"></a>
-<span class="sourceLineNo">299</span> private final StreamResource favIcon;<a name="line.299"></a>
-<span class="sourceLineNo">300</span> private final Map<String,String> staticFilesMap;<a name="line.300"></a>
-<span class="sourceLineNo">301</span> private final String[] staticFilesPrefixes;<a name="line.301"></a>
-<span class="sourceLineNo">302</span> private final MessageBundle msgs;<a name="line.302"></a>
-<span class="sourceLineNo">303</span> private final ConfigFile configFile;<a name="line.303"></a>
-<span class="sourceLineNo">304</span> private final VarResolver varResolver;<a name="line.304"></a>
-<span class="sourceLineNo">305</span> private final Map<String,CallRouter> callRouters;<a name="line.305"></a>
-<span class="sourceLineNo">306</span> private final Map<String,CallMethod> callMethods;<a name="line.306"></a>
-<span class="sourceLineNo">307</span> private final Map<String,RestContext> childResources;<a name="line.307"></a>
-<span class="sourceLineNo">308</span> private final RestLogger logger;<a name="line.308"></a>
-<span class="sourceLineNo">309</span> private final RestCallHandler callHandler;<a name="line.309"></a>
-<span class="sourceLineNo">310</span> private final RestInfoProvider infoProvider;<a name="line.310"></a>
-<span class="sourceLineNo">311</span> private final RestException initException;<a name="line.311"></a>
-<span class="sourceLineNo">312</span> private final RestContext parentContext;<a name="line.312"></a>
-<span class="sourceLineNo">313</span> private final RestResourceResolver resourceResolver;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span> // In-memory cache of images and stylesheets in the org.apache.juneau.rest.htdocs package.<a name="line.315"></a>
-<span class="sourceLineNo">316</span> private final Map<String,StreamResource> staticFilesCache = new ConcurrentHashMap<String,StreamResource>();<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span> private final ResourceFinder resourceFinder;<a name="line.318"></a>
-<span class="sourceLineNo">319</span> private final ConcurrentHashMap<Integer,AtomicInteger> stackTraceHashes = new ConcurrentHashMap<Integer,AtomicInteger>();<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> * Constructor.<a name="line.323"></a>
-<span class="sourceLineNo">324</span> *<a name="line.324"></a>
-<span class="sourceLineNo">325</span> * @param resource The resource class (a class annotated with {@link RestResource @RestResource}).<a name="line.325"></a>
-<span class="sourceLineNo">326</span> * @param servletContext<a name="line.326"></a>
-<span class="sourceLineNo">327</span> * The servlet context object.<a name="line.327"></a>
-<span class="sourceLineNo">328</span> * Can be <jk>null</jk> if this isn't a<a name="line.328"></a>
-<span class="sourceLineNo">329</span> * @param config The servlet configuration object.<a name="line.329"></a>
-<span class="sourceLineNo">330</span> * @throws Exception If any initialization problems were encountered.<a name="line.330"></a>
-<span class="sourceLineNo">331</span> */<a name="line.331"></a>
-<span class="sourceLineNo">332</span> @SuppressWarnings("unchecked")<a name="line.332"></a>
-<span class="sourceLineNo">333</span> public RestContext(Object resource, ServletContext servletContext, RestConfig config) throws Exception {<a name="line.333"></a>
-<span class="sourceLineNo">334</span> super(null);<a name="line.334"></a>
-<span class="sourceLineNo">335</span> RestException _initException = null;<a name="line.335"></a>
-<span class="sourceLineNo">336</span> try {<a name="line.336"></a>
-<span class="sourceLineNo">337</span> this.resource = resource;<a name="line.337"></a>
-<span class="sourceLineNo">338</span> this.config = config;<a name="line.338"></a>
-<span class="sourceLineNo">339</span> this.resourceFinder = new ResourceFinder(resource.getClass());<a name="line.339"></a>
-<span class="sourceLineNo">340</span> this.parentContext = config.parentContext;<a name="line.340"></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> htmlHeader,<a name="line.264"></a>
+<span class="sourceLineNo">265</span> htmlNav,<a name="line.265"></a>
+<span class="sourceLineNo">266</span> htmlAside,<a name="line.266"></a>
+<span class="sourceLineNo">267</span> htmlStyle,<a name="line.267"></a>
+<span class="sourceLineNo">268</span> htmlStylesheet,<a name="line.268"></a>
+<span class="sourceLineNo">269</span> htmlScript,<a name="line.269"></a>
+<span class="sourceLineNo">270</span> htmlFooter,<a name="line.270"></a>
+<span class="sourceLineNo">271</span> htmlNoResultsMessage;<a name="line.271"></a>
+<span class="sourceLineNo">272</span> private final String[]<a name="line.272"></a>
+<span class="sourceLineNo">273</span> htmlLinks;<a name="line.273"></a>
+<span class="sourceLineNo">274</span> private final boolean htmlNoWrap;<a name="line.274"></a>
+<span class="sourceLineNo">275</span> private final HtmlDocTemplate htmlTemplate;<a name="line.275"></a>
+<span class="sourceLineNo">276</span> private final Map<String,Widget> htmlWidgets;<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span> private final Set<String> allowMethodParams;<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span> private final ObjectMap properties;<a name="line.280"></a>
+<span class="sourceLineNo">281</span> private final Class<?>[]<a name="line.281"></a>
+<span class="sourceLineNo">282</span> beanFilters,<a name="line.282"></a>
+<span class="sourceLineNo">283</span> pojoSwaps;<a name="line.283"></a>
+<span class="sourceLineNo">284</span> private final Map<Class<?>,RestParam> paramResolvers;<a name="line.284"></a>
+<span class="sourceLineNo">285</span> private final SerializerGroup serializers;<a name="line.285"></a>
+<span class="sourceLineNo">286</span> private final ParserGroup parsers;<a name="line.286"></a>
+<span class="sourceLineNo">287</span> private final UrlEncodingSerializer urlEncodingSerializer;<a name="line.287"></a>
+<span class="sourceLineNo">288</span> private final UrlEncodingParser urlEncodingParser;<a name="line.288"></a>
+<span class="sourceLineNo">289</span> private final EncoderGroup encoders;<a name="line.289"></a>
+<span class="sourceLineNo">290</span> private final MediaType[]<a name="line.290"></a>
+<span class="sourceLineNo">291</span> supportedContentTypes,<a name="line.291"></a>
+<span class="sourceLineNo">292</span> supportedAcceptTypes;<a name="line.292"></a>
+<span class="sourceLineNo">293</span> private final Map<String,String> defaultRequestHeaders;<a name="line.293"></a>
+<span class="sourceLineNo">294</span> private final Map<String,Object> defaultResponseHeaders;<a name="line.294"></a>
+<span class="sourceLineNo">295</span> private final BeanContext beanContext;<a name="line.295"></a>
+<span class="sourceLineNo">296</span> private final RestConverter[] converters;<a name="line.296"></a>
+<span class="sourceLineNo">297</span> private final RestGuard[] guards;<a name="line.297"></a>
+<span class="sourceLineNo">298</span> private final ResponseHandler[] responseHandlers;<a name="line.298"></a>
+<span class="sourceLineNo">299</span> private final MimetypesFileTypeMap mimetypesFileTypeMap;<a name="line.299"></a>
+<span class="sourceLineNo">300</span> private final StreamResource favIcon;<a name="line.300"></a>
+<span class="sourceLineNo">301</span> private final Map<String,String> staticFilesMap;<a name="line.301"></a>
+<span class="sourceLineNo">302</span> private final String[] staticFilesPrefixes;<a name="line.302"></a>
+<span class="sourceLineNo">303</span> private final MessageBundle msgs;<a name="line.303"></a>
+<span class="sourceLineNo">304</span> private final ConfigFile configFile;<a name="line.304"></a>
+<span class="sourceLineNo">305</span> private final VarResolver varResolver;<a name="line.305"></a>
+<span class="sourceLineNo">306</span> private final Map<String,CallRouter> callRouters;<a name="line.306"></a>
+<span class="sourceLineNo">307</span> private final Map<String,CallMethod> callMethods;<a name="line.307"></a>
+<span class="sourceLineNo">308</span> private final Map<String,RestContext> childResources;<a name="line.308"></a>
+<span class="sourceLineNo">309</span> private final RestLogger logger;<a name="line.309"></a>
+<span class="sourceLineNo">310</span> private final RestCallHandler callHandler;<a name="line.310"></a>
+<span class="sourceLineNo">311</span> private final RestInfoProvider infoProvider;<a name="line.311"></a>
+<span class="sourceLineNo">312</span> private final RestException initException;<a name="line.312"></a>
+<span class="sourceLineNo">313</span> private final RestContext parentContext;<a name="line.313"></a>
+<span class="sourceLineNo">314</span> private final RestResourceResolver resourceResolver;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span> // Lifecycle methods<a name="line.316"></a>
+<span class="sourceLineNo">317</span> private final Method[] <a name="line.317"></a>
+<span class="sourceLineNo">318</span> postInitMethods, <a name="line.318"></a>
+<span class="sourceLineNo">319</span> postInitChildFirstMethods, <a name="line.319"></a>
+<span class="sourceLineNo">320</span> preCallMethods, <a name="line.320"></a>
+<span class="sourceLineNo">321</span> postCallMethods, <a name="line.321"></a>
+<span class="sourceLineNo">322</span> startCallMethods, <a name="line.322"></a>
+<span class="sourceLineNo">323</span> endCallMethods, <a name="line.323"></a>
+<span class="sourceLineNo">324</span> destroyMethods;<a name="line.324"></a>
+<span class="sourceLineNo">325</span> private final RestParam[][] <a name="line.325"></a>
+<span class="sourceLineNo">326</span> preCallMethodParams, <a name="line.326"></a>
+<span class="sourceLineNo">327</span> postCallMethodParams;<a name="line.327"></a>
+<span class="sourceLineNo">328</span> private final Class<?>[][] <a name="line.328"></a>
+<span class="sourceLineNo">329</span> postInitMethodParams, <a name="line.329"></a>
+<span class="sourceLineNo">330</span> postInitChildFirstMethodParams, <a name="line.330"></a>
+<span class="sourceLineNo">331</span> startCallMethodParams, <a name="line.331"></a>
+<span class="sourceLineNo">332</span> endCallMethodParams, <a name="line.332"></a>
+<span class="sourceLineNo">333</span> destroyMethodParams;<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span> // In-memory cache of images and stylesheets in the org.apache.juneau.rest.htdocs package.<a name="line.335"></a>
+<span class="sourceLineNo">336</span> private final Map<String,StreamResource> staticFilesCache = new ConcurrentHashMap<String,StreamResource>();<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span> private final ResourceFinder resourceFinder;<a name="line.338"></a>
+<span class="sourceLineNo">339</span> private final ConcurrentHashMap<Integer,AtomicInteger> stackTraceHashes = new ConcurrentHashMap<Integer,AtomicInteger>();<a name="line.339"></a>
+<span class="sourceLineNo">340</span><a name="line.340"></a>
<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span> Builder b = new Builder(resource, servletContext, config);<a name="line.342"></a>
-<span class="sourceLineNo">343</span> this.allowHeaderParams = b.allowHeaderParams;<a name="line.343"></a>
-<span class="sourceLineNo">344</span> this.allowBodyParam = b.allowBodyParam;<a name="line.344"></a>
-<span class="sourceLineNo">345</span> this.renderResponseStackTraces = b.renderResponseStackTraces;<a name="line.345"></a>
-<span class="sourceLineNo">346</span> this.useStackTraceHashes = b.useStackTraceHashes;<a name="line.346"></a>
-<span class="sourceLineNo">347</span> this.allowMethodParams = Collections.unmodifiableSet(b.allowMethodParams);<a name="line.347"></a>
-<span class="sourceLineNo">348</span> this.defaultCharset = b.defaultCharset;<a name="line.348"></a>
-<span class="sourceLineNo">349</span> this.paramFormat = b.paramFormat;<a name="line.349"></a>
-<span class="sourceLineNo">350</span> this.varResolver = b.varResolver;<a name="line.350"></a>
-<span class="sourceLineNo">351</span> this.configFile = b.configFile;<a name="line.351"></a>
-<span class="sourceLineNo">352</span> this.properties = b.properties;<a name="line.352"></a>
-<span class="sourceLineNo">353</span> this.beanFilters = b.beanFilters;<a name="line.353"></a>
-<span class="sourceLineNo">354</span> this.pojoSwaps = b.pojoSwaps;<a name="line.354"></a>
-<span class="sourceLineNo">355</span> this.paramResolvers = Collections.unmodifiableMap(b.paramResolvers);<a name="line.355"></a>
-<span class="sourceLineNo">356</span> this.serializers = b.serializers;<a name="line.356"></a>
-<span class="sourceLineNo">357</span> this.parsers = b.parsers;<a name="line.357"></a>
-<span class="sourceLineNo">358</span> this.urlEncodingSerializer = b.urlEncodingSerializer;<a name="line.358"></a>
-<span class="sourceLineNo">359</span> this.urlEncodingParser = b.urlEncodingParser;<a name="line.359"></a>
-<span class="sourceLineNo">360</span> this.encoders = b.encoders;<a name="line.360"></a>
-<span class="sourceLineNo">361</span> this.supportedContentTypes = toObjectArray(b.supportedContentTypes, MediaType.class);<a name="line.361"></a>
-<span class="sourceLineNo">362</span> this.supportedAcceptTypes = toObjectArray(b.supportedAcceptTypes, MediaType.class);<a name="line.362"></a>
-<span class="sourceLineNo">363</span> this.clientVersionHeader = b.clientVersionHeader;<a name="line.363"></a>
-<span class="sourceLineNo">364</span> this.defaultRequestHeaders = Collections.unmodifiableMap(b.defaultRequestHeaders);<a name="line.364"></a>
-<span class="sourceLineNo">365</span> this.defaultResponseHeaders = Collections.unmodifiableMap(b.defaultResponseHeaders);<a name="line.365"></a>
-<span class="sourceLineNo">366</span> this.beanContext = b.beanContext;<a name="line.366"></a>
-<span class="sourceLineNo">367</span> this.converters = b.converters.toArray(new RestConverter[b.converters.size()]);<a name="line.367"></a>
-<span class="sourceLineNo">368</span> this.guards = b.guards.toArray(new RestGuard[b.guards.size()]);<a name="line.368"></a>
-<span class="sourceLineNo">369</span> this.responseHandlers = toObjectArray(b.responseHandlers, ResponseHandler.class);<a name="line.369"></a>
-<span class="sourceLineNo">370</span> this.mimetypesFileTypeMap = b.mimetypesFileTypeMap;<a name="line.370"></a>
-<span class="sourceLineNo">371</span> this.favIcon = b.favIcon;<a name="line.371"></a>
-<span class="sourceLineNo">372</span> this.staticFilesMap = Collections.unmodifiableMap(b.staticFilesMap);<a name="line.372"></a>
-<span class="sourceLineNo">373</span> this.staticFilesPrefixes = b.staticFilesPrefixes;<a name="line.373"></a>
-<span class="sourceLineNo">374</span> this.msgs = b.messageBundle;<a name="line.374"></a>
-<span class="sourceLineNo">375</span> this.childResources = Collections.synchronizedMap(new LinkedHashMap<String,RestContext>()); // Not unmodifiable on purpose so that children can be replaced.<a name="line.375"></a>
-<span class="sourceLineNo">376</span> this.logger = b.logger;<a name="line.376"></a>
-<span class="sourceLineNo">377</span> this.fullPath = b.fullPath;<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span> this.htmlWidgets = Collections.unmodifiableMap(b.htmlWidgets);<a name="line.379"></a>
-<span class="sourceLineNo">380</span> this.htmlHeader = b.htmlHeader;<a name="line.380"></a>
-<span class="sourceLineNo">381</span> this.htmlLinks = b.htmlLinks;<a name="line.381"></a>
-<span class="sourceLineNo">382</span> this.htmlNav = b.htmlNav;<a name="line.382"></a>
-<span class="sourceLineNo">383</span> this.htmlAside = b.htmlAside;<a name="line.383"></a>
-<span class="sourceLineNo">384</span> this.htmlStyle = b.htmlStyle;<a name="line.384"></a>
-<span class="sourceLineNo">385</span> this.htmlStylesheet = b.htmlStylesheet;<a name="line.385"></a>
-<span class="sourceLineNo">386</span> this.htmlScript = b.htmlScript;<a name="line.386"></a>
-<span class="sourceLineNo">387</span> this.htmlFooter = b.htmlFooter;<a name="line.387"></a>
-<span class="sourceLineNo">388</span> this.htmlNoWrap = b.htmlNoWrap;<a name="line.388"></a>
-<span class="sourceLineNo">389</span> this.htmlNoResultsMessage = b.htmlNoResultsMessage;<a name="line.389"></a>
-<span class="sourceLineNo">390</span> this.htmlTemplate = b.htmlTemplate;<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span> //----------------------------------------------------------------------------------------------------<a name="line.392"></a>
-<span class="sourceLineNo">393</span> // Initialize the child resources.<a name="line.393"></a>
-<span class="sourceLineNo">394</span> // Done after initializing fields above since we pass this object to the child resources.<a name="line.394"></a>
-<span class="sourceLineNo">395</span> //----------------------------------------------------------------------------------------------------<a name="line.395"></a>
-<span class="sourceLineNo">396</span> List<String> methodsFound = new LinkedList<String>(); // Temporary to help debug transient duplicate method issue.<a name="line.396"></a>
-<span class="sourceLineNo">397</span> Map<String,CallRouter.Builder> routers = new LinkedHashMap<String,CallRouter.Builder>();<a name="line.397"></a>
-<span class="sourceLineNo">398</span> Map<String,CallMethod> _javaRestMethods = new LinkedHashMap<String,CallMethod>();<a name="line.398"></a>
-<span class="sourceLineNo">399</span> for (java.lang.reflect.Method method : resource.getClass().getMethods()) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span> if (method.isAnnotationPresent(RestMethod.class)) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span> RestMethod a = method.getAnnotation(RestMethod.class);<a name="line.401"></a>
-<span class="sourceLineNo">402</span> methodsFound.add(method.getName() + "," + a.name() + "," + a.path());<a name="line.402"></a>
-<span class="sourceLineNo">403</span> try {<a name="line.403"></a>
-<span class="sourceLineNo">404</span> if (! Modifier.isPublic(method.getModifiers()))<a name="line.404"></a>
-<span class="sourceLineNo">405</span> throw new RestServletException("@RestMethod method {0}.{1} must be defined as public.", this.getClass().getName(), method.getName());<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span> CallMethod sm = new CallMethod(resource, method, this);<a name="line.407"></a>
-<span class="sourceLineNo">408</span> String httpMethod = sm.getHttpMethod();<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span> // PROXY is a special case where a method returns an interface that we<a name="line.410"></a>
-<span class="sourceLineNo">411</span> // can perform REST calls against.<a name="line.411"></a>
-<span class="sourceLineNo">412</span> // We override the CallMethod.invoke() method to insert our logic.<a name="line.412"></a>
-<span class="sourceLineNo">413</span> if ("PROXY".equals(httpMethod)) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span> final ClassMeta<?> interfaceClass = beanContext.getClassMeta(method.getGenericReturnType());<a name="line.415"></a>
-<span class="sourceLineNo">416</span> final Map<String,Method> remoteableMethods = interfaceClass.getRemoteableMethods();<a name="line.416"></a>
-<span class="sourceLineNo">417</span> if (remoteableMethods.isEmpty())<a name="line.417"></a>
-<span class="sourceLineNo">418</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.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span> sm = new CallMethod(resource, method, this) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span> @Override<a name="line.422"></a>
-<span class="sourceLineNo">423</span> int invoke(String pathInfo, RestRequest req, RestResponse res) throws RestException {<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span> int rc = super.invoke(pathInfo, req, res);<a name="line.425"></a>
-<span class="sourceLineNo">426</span> if (rc != SC_OK)<a name="line.426"></a>
-<span class="sourceLineNo">427</span> return rc;<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span> final Object o = res.getOutput();<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span> if ("GET".equals(req.getMethod())) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span> res.setOutput(getMethodInfo(remoteableMethods.values()));<a name="line.432"></a>
-<span class="sourceLineNo">433</span> return SC_OK;<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span> } else if ("POST".equals(req.getMethod())) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span> if (pathInfo.indexOf('/') != -1)<a name="line.436"></a>
-<span class="sourceLineNo">437</span> pathInfo = pathInfo.substring(pathInfo.lastIndexOf('/')+1);<a name="line.437"></a>
-<span class="sourceLineNo">438</span> pathInfo = urlDecode(pathInfo);<a name="line.438"></a>
-<span class="sourceLineNo">439</span> java.lang.reflect.Method m = remoteableMethods.get(pathInfo);<a name="line.439"></a>
-<span class="sourceLineNo">440</span> if (m != null) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span> try {<a name="line.441"></a>
-<span class="sourceLineNo">442</span> // Parse the args and invoke the method.<a name="line.442"></a>
-<span class="sourceLineNo">443</span> Parser p = req.getBody().getParser();<a name="line.443"></a>
-<span class="sourceLineNo">444</span> Object input = p.isReaderParser() ? req.getReader() : req.getInputStream();<a name="line.444"></a>
-<span class="sourceLineNo">445</span> Object output = m.invoke(o, p.parseArgs(input, m.getGenericParameterTypes()));<a name="line.445"></a>
-<span class="sourceLineNo">446</span> res.setOutput(output);<a name="line.446"></a>
-<span class="sourceLineNo">447</span> return SC_OK;<a name="line.447"></a>
-<span class="sourceLineNo">448</span> } catch (Exception e) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span> throw new RestException(SC_INTERNAL_SERVER_ERROR, e);<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> }<a name="line.452"></a>
-<span class="sourceLineNo">453</span> return SC_NOT_FOUND;<a name="line.453"></a>
-<span class="sourceLineNo">454</span> }<a name="line.454"></a>
-<span class="sourceLineNo">455</span> };<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span> _javaRestMethods.put(method.getName(), sm);<a name="line.457"></a>
-<span class="sourceLineNo">458</span> addToRouter(routers, "GET", sm);<a name="line.458"></a>
-<span class="sourceLineNo">459</span> addToRouter(routers, "POST", sm);<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span> } else {<a name="line.461"></a>
-<span class="sourceLineNo">462</span> _javaRestMethods.put(method.getName(), sm);<a name="line.462"></a>
-<span class="sourceLineNo">463</span> addToRouter(routers, httpMethod, sm);<a name="line.463"></a>
-<span class="sourceLineNo">464</span> }<a name="line.464"></a>
-<span class="sourceLineNo">465</span> } catch (RestServletException e) {<a name="line.465"></a>
-<span class="sourceLineNo">466</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.466"></a>
-<span class="sourceLineNo">467</span> }<a name="line.467"></a>
-<span class="sourceLineNo">468</span> }<a name="line.468"></a>
-<span class="sourceLineNo">469</span> }<a name="line.469"></a>
-<span class="sourceLineNo">470</span> this.callMethods = Collections.unmodifiableMap(_javaRestMethods);<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span> Map<String,CallRouter> _callRouters = new LinkedHashMap<String,CallRouter>();<a name="line.472"></a>
-<span class="sourceLineNo">473</span> for (CallRouter.Builder crb : routers.values())<a name="line.473"></a>
-<span class="sourceLineNo">474</span> _callRouters.put(crb.getHttpMethodName(), crb.build());<a name="line.474"></a>
-<span class="sourceLineNo">475</span> this.callRouters = Collections.unmodifiableMap(_callRouters);<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span> // Initialize our child resources.<a name="line.477"></a>
-<span class="sourceLineNo">478</span> resourceResolver = resolve(resource, RestResourceResolver.class, b.resourceResolver);<a name="line.478"></a>
-<span class="sourceLineNo">479</span> for (Object o : config.childResources) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span> String path = null;<a name="line.480"></a>
-<span class="sourceLineNo">481</span> Object r = null;<a name="line.481"></a>
-<span class="sourceLineNo">482</span> if (o instanceof Pair) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span> Pair<String,Object> p = (Pair<String,Object>)o;<a name="line.483"></a>
-<span class="sourceLineNo">484</span> path = p.first();<a name="line.484"></a>
-<span class="sourceLineNo">485</span> r = p.second();<a name="line.485"></a>
-<span class="sourceLineNo">486</span> } else if (o instanceof Class<?>) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span> Class<?> c = (Class<?>)o;<a name="line.487"></a>
-<span class="sourceLineNo">488</span> // Don't allow specifying yourself as a child. Causes an infinite loop.<a name="line.488"></a>
-<span class="sourceLineNo">489</span> if (c == config.resourceClass)<a name="line.489"></a>
-<span class="sourceLineNo">490</span> continue;<a name="line.490"></a>
-<span class="sourceLineNo">491</span> r = c;<a name="line.491"></a>
-<span class="sourceLineNo">492</span> } else {<a name="line.492"></a>
-<span class="sourceLineNo">493</span> r = o;<a name="line.493"></a>
-<span class="sourceLineNo">494</span> }<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span> RestConfig childConfig = null;<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span> if (o instanceof Class) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span> Class<?> oc = (Class<?>)o;<a name="line.499"></a>
-<span class="sourceLineNo">500</span> childConfig = new RestConfig(config.inner, oc, this);<a name="line.500"></a>
-<span class="sourceLineNo">501</span> r = resourceResolver.resolve(oc, childConfig);<a name="line.501"></a>
-<span class="sourceLineNo">502</span> } else {<a name="line.502"></a>
-<span class="sourceLineNo">503</span> r = o;<a name="line.503"></a>
-<span class="sourceLineNo">504</span> childConfig = new RestConfig(config.inner, o.getClass(), this);<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> if (r instanceof RestServlet) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span> RestServlet rs = (RestServlet)r;<a name="line.508"></a>
-<span class="sourceLineNo">509</span> rs.init(childConfig);<a name="line.509"></a>
-<span class="sourceLineNo">510</span> if (rs.getContext() == null)<a name="line.510"></a>
-<span class="sourceLineNo">511</span> throw new RestException(SC_INTERNAL_SERVER_ERROR, "Servlet {0} not initialized. init(RestConfig) was not called. This can occur if you've overridden this method but didn't call super.init(RestConfig).", rs.getClass().getName());<a name="line.511"></a>
-<span class="sourceLineNo">512</span> path = childConfig.path;<a name="line.512"></a>
-<span class="sourceLineNo">513</span> childResources.put(path, rs.getContext());<a name="line.513"></a>
-<span class="sourceLineNo">514</span> } else {<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span> // Call the init(RestConfig) method.<a name="line.516"></a>
-<span class="sourceLineNo">517</span> java.lang.reflect.Method m2 = findPublicMethod(r.getClass(), "init", Void.class, RestConfig.class);<a name="line.517"></a>
-<span class="sourceLineNo">518</span> if (m2 != null)<a name="line.518"></a>
-<span class="sourceLineNo">519</span> m2.invoke(r, childConfig);<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span> RestContext rc2 = new RestContext(r, servletContext, childConfig);<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span> // Call the init(RestContext) method.<a name="line.523"></a>
-<span class="sourceLineNo">524</span> m2 = findPublicMethod(r.getClass(), "init", Void.class, RestContext.class);<a name="line.524"></a>
-<span class="sourceLineNo">525</span> if (m2 != null)<a name="line.525"></a>
-<span class="sourceLineNo">526</span> m2.invoke(r, rc2);<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span> path = childConfig.path;<a name="line.528"></a>
-<span class="sourceLineNo">529</span> childResources.put(path, rc2);<a name="line.529"></a>
-<span class="sourceLineNo">530</span> }<a name="line.530"></a>
-<span class="sourceLineNo">531</span> }<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span> callHandler = config.callHandler == null ? new RestCallHandler(this) : resolve(resource, RestCallHandler.class, config.callHandler, this);<a name="line.533"></a>
-<span class="sourceLineNo">534</span> infoProvider = config.infoProvider == null ? new RestInfoProvider(this) : resolve(resource, RestInfoProvider.class, config.infoProvider, this);<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span> } catch (RestException e) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span> _initException = e;<a name="line.537"></a>
-<span class="sourceLineNo">538</span> throw e;<a name="line.538"></a>
-<span class="sourceLineNo">539</span> } catch (Exception e) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span> _initException = new RestException(SC_INTERNAL_SERVER_ERROR, e);<a name="line.540"></a>
-<span class="sourceLineNo">541</span> throw e;<a name="line.541"></a>
-<span class="sourceLineNo">542</span> } finally {<a name="line.542"></a>
-<span class="sourceLineNo">543</span> initException = _initException;<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><a name="line.546"></a>
-<span class="sourceLineNo">547</span> private static void addToRouter(Map<String, CallRouter.Builder> routers, String httpMethodName, CallMethod cm) throws RestServletException {<a name="line.547"></a>
-<span class="sourceLineNo">548</span> if (! routers.containsKey(httpMethodName))<a name="line.548"></a>
-<span class="sourceLineNo">549</span> routers.put(httpMethodName, new CallRouter.Builder(httpMethodName));<a name="line.549"></a>
-<span class="sourceLineNo">550</span> routers.get(httpMethodName).add(cm);<a name="line.550"></a>
-<span class="sourceLineNo">551</span> }<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span> private static class Builder {<a name="line.553"></a>
-<span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span> boolean allowHeaderParams, allowBodyParam, renderResponseStackTraces, useStackTraceHashes;<a name="line.555"></a>
-<span class="sourceLineNo">556</span> VarResolver varResolver;<a name="line.556"></a>
-<span class="sourceLineNo">557</span> ConfigFile configFile;<a name="line.557"></a>
-<span class="sourceLineNo">558</span> ObjectMap properties;<a name="line.558"></a>
-<span class="sourceLineNo">559</span> Class<?>[] beanFilters;<a name="line.559"></a>
-<span class="sourceLineNo">560</span> Class<?>[] pojoSwaps;<a name="line.560"></a>
-<span class="sourceLineNo">561</span> Map<Class<?>,RestParam> paramResolvers = new HashMap<Class<?>,RestParam>();<a name="line.561"></a>
-<span class="sourceLineNo">562</span> SerializerGroup serializers;<a name="line.562"></a>
-<span class="sourceLineNo">563</span> ParserGroup parsers;<a name="line.563"></a>
-<span class="sourceLineNo">564</span> UrlEncodingSerializer urlEncodingSerializer;<a name="line.564"></a>
-<span class="sourceLineNo">565</span> UrlEncodingParser urlEncodingParser;<a name="line.565"></a>
-<span class="sourceLineNo">566</span> EncoderGroup encoders;<a name="line.566"></a>
-<span class="sourceLineNo">567</span> String clientVersionHeader = "", defaultCharset, paramFormat, htmlHeader, htmlNav, htmlAside, htmlStyle,<a name="line.567"></a>
-<span class="sourceLineNo">568</span> htmlStylesheet, htmlScript, htmlFooter, htmlNoResultsMessage;<a name="line.568"></a>
-<span class="sourceLineNo">569</span> String[] htmlLinks;<a name="line.569"></a>
-<span class="sourceLineNo">570</span> boolean htmlNoWrap;<a name="line.570"></a>
-<span class="sourceLineNo">571</span> HtmlDocTemplate htmlTemplate;<a name="line.571"></a>
+<span class="sourceLineNo">342</span> /**<a name="line.342"></a>
+<span class="sourceLineNo">343</span> * Constructor.<a name="line.343"></a>
+<span class="sourceLineNo">344</span> *<a name="line.344"></a>
+<span class="sourceLineNo">345</span> * @param resource The resource class (a class annotated with {@link RestResource @RestResource}).<a name="line.345"></a>
+<span class="sourceLineNo">346</span> * @param servletContext<a name="line.346"></a>
+<span class="sourceLineNo">347</span> * The servlet context object.<a name="line.347"></a>
+<span class="sourceLineNo">348</span> * Can be <jk>null</jk> if this isn't a<a name="line.348"></a>
+<span class="sourceLineNo">349</span> * @param config The servlet configuration object.<a name="line.349"></a>
+<span class="sourceLineNo">350</span> * @throws Exception If any
<TRUNCATED>
[02/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/rest/RestServlet.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RestServlet.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RestServlet.html
index 7e225a0..076aad2 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RestServlet.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RestServlet.html
@@ -56,266 +56,200 @@
<span class="sourceLineNo">048</span> public final synchronized void init(ServletConfig servletConfig) throws ServletException {<a name="line.48"></a>
<span class="sourceLineNo">049</span> try {<a name="line.49"></a>
<span class="sourceLineNo">050</span> RestConfig rsc = new RestConfig(servletConfig, this.getClass(), null);<a name="line.50"></a>
-<span class="sourceLineNo">051</span> init(rsc);<a name="line.51"></a>
-<span class="sourceLineNo">052</span> if (! isInitialized) {<a name="line.52"></a>
-<span class="sourceLineNo">053</span> // Subclass may not have called super.init(RestServletConfig), so initialize here.<a name="line.53"></a>
-<span class="sourceLineNo">054</span> createContext(rsc);<a name="line.54"></a>
-<span class="sourceLineNo">055</span> super.init(servletConfig);<a name="line.55"></a>
-<span class="sourceLineNo">056</span> }<a name="line.56"></a>
-<span class="sourceLineNo">057</span> } catch (RestException e) {<a name="line.57"></a>
-<span class="sourceLineNo">058</span> // Thrown RestExceptions are simply caught and re-thrown on subsequent calls to service().<a name="line.58"></a>
-<span class="sourceLineNo">059</span> initException = e;<a name="line.59"></a>
-<span class="sourceLineNo">060</span> log(SEVERE, e, "Servlet init error on class ''{0}''", getClass().getName());<a name="line.60"></a>
-<span class="sourceLineNo">061</span> } catch (ServletException e) {<a name="line.61"></a>
-<span class="sourceLineNo">062</span> initException = e;<a name="line.62"></a>
-<span class="sourceLineNo">063</span> log(SEVERE, e, "Servlet init error on class ''{0}''", getClass().getName());<a name="line.63"></a>
-<span class="sourceLineNo">064</span> throw e;<a name="line.64"></a>
-<span class="sourceLineNo">065</span> } catch (Exception e) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span> initException = e;<a name="line.66"></a>
-<span class="sourceLineNo">067</span> log(SEVERE, e, "Servlet init error on class ''{0}''", getClass().getName());<a name="line.67"></a>
-<span class="sourceLineNo">068</span> throw new ServletException(e);<a name="line.68"></a>
-<span class="sourceLineNo">069</span> } catch (Throwable e) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span> initException = new Exception(e);<a name="line.70"></a>
-<span class="sourceLineNo">071</span> log(SEVERE, e, "Servlet init error on class ''{0}''", getClass().getName());<a name="line.71"></a>
-<span class="sourceLineNo">072</span> throw new ServletException(e);<a name="line.72"></a>
-<span class="sourceLineNo">073</span> } finally {<a name="line.73"></a>
-<span class="sourceLineNo">074</span> isInitialized = true;<a name="line.74"></a>
-<span class="sourceLineNo">075</span> }<a name="line.75"></a>
-<span class="sourceLineNo">076</span> }<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span> /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * Resource initialization method.<a name="line.79"></a>
-<span class="sourceLineNo">080</span> *<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * <p><a name="line.81"></a>
-<span class="sourceLineNo">082</span> * Identical to {@link Servlet#init(ServletConfig)} except the config object provides access to the external config<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * file, configuration properties, and variable resolver defined for this resource.<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> * Classes can also use {@link HttpServlet#init()} and {@link RestServlet#getServletConfig()} as well to perform<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * initialization.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> *<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * <p><a name="line.89"></a>
-<span class="sourceLineNo">090</span> * Note that if you override this method, you must first call <code><jk>super</jk>.init(servletConfig)</code>!<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> * Resource classes that don't extend from {@link RestServlet} can add this method to their class to get access to<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * the config object.<a name="line.94"></a>
-<span class="sourceLineNo">095</span> *<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * @param config The servlet configuration.<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * @throws Exception Any exception can be thrown to signal an initialization failure.<a name="line.97"></a>
-<span class="sourceLineNo">098</span> */<a name="line.98"></a>
-<span class="sourceLineNo">099</span> public synchronized void init(RestConfig config) throws Exception {<a name="line.99"></a>
-<span class="sourceLineNo">100</span> if (isInitialized)<a name="line.100"></a>
-<span class="sourceLineNo">101</span> return;<a name="line.101"></a>
-<span class="sourceLineNo">102</span> createContext(config);<a name="line.102"></a>
-<span class="sourceLineNo">103</span> super.init(config);<a name="line.103"></a>
-<span class="sourceLineNo">104</span> init(context);<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> /**<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * Convenience method if you want to perform initialization on your resource after all configuration settings<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * have been made.<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * <p><a name="line.111"></a>
-<span class="sourceLineNo">112</span> * This allows you to get access to the {@link RestContext} object during initialization.<a name="line.112"></a>
-<span class="sourceLineNo">113</span> *<a name="line.113"></a>
-<span class="sourceLineNo">114</span> * <p><a name="line.114"></a>
-<span class="sourceLineNo">115</span> * The default implementation does nothing.<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *<a name="line.116"></a>
-<span class="sourceLineNo">117</span> * @param context The servlet context containing all the set-in-stone configurations for this resource.<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * @throws Exception Any exception can be thrown to signal an initialization failure.<a name="line.118"></a>
-<span class="sourceLineNo">119</span> */<a name="line.119"></a>
-<span class="sourceLineNo">120</span> public synchronized void init(RestContext context) throws Exception {}<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> private synchronized void createContext(RestConfig config) throws Exception {<a name="line.123"></a>
-<span class="sourceLineNo">124</span> if (isInitialized)<a name="line.124"></a>
-<span class="sourceLineNo">125</span> return;<a name="line.125"></a>
-<span class="sourceLineNo">126</span> this.config = config;<a name="line.126"></a>
-<span class="sourceLineNo">127</span> this.context = new RestContext(this, this.getServletContext(), config);<a name="line.127"></a>
-<span class="sourceLineNo">128</span> this.isInitialized = true;<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> // Other methods<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> /**<a name="line.136"></a>
-<span class="sourceLineNo">137</span> * The main service method.<a name="line.137"></a>
-<span class="sourceLineNo">138</span> *<a name="line.138"></a>
-<span class="sourceLineNo">139</span> * <p><a name="line.139"></a>
-<span class="sourceLineNo">140</span> * Subclasses can optionally override this method if they want to tailor the behavior of requests.<a name="line.140"></a>
-<span class="sourceLineNo">141</span> */<a name="line.141"></a>
-<span class="sourceLineNo">142</span> @Override /* Servlet */<a name="line.142"></a>
-<span class="sourceLineNo">143</span> public void service(HttpServletRequest r1, HttpServletResponse r2) throws ServletException, IOException {<a name="line.143"></a>
-<span class="sourceLineNo">144</span> try {<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span> if (initException != null) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span> if (initException instanceof RestException)<a name="line.147"></a>
-<span class="sourceLineNo">148</span> throw (RestException)initException;<a name="line.148"></a>
-<span class="sourceLineNo">149</span> throw new RestException(SC_INTERNAL_SERVER_ERROR, initException);<a name="line.149"></a>
-<span class="sourceLineNo">150</span> }<a name="line.150"></a>
-<span class="sourceLineNo">151</span> if (context == null)<a name="line.151"></a>
-<span class="sourceLineNo">152</span> throw new RestException(SC_INTERNAL_SERVER_ERROR, "Servlet {0} not initialized. init(RestConfig) was not called. This can occur if you've overridden this method but didn't call super.init(RestConfig).", getClass().getName());<a name="line.152"></a>
-<span class="sourceLineNo">153</span> if (! isInitialized)<a name="line.153"></a>
-<span class="sourceLineNo">154</span> throw new RestException(SC_INTERNAL_SERVER_ERROR, "Servlet {0} has not been initialized", getClass().getName());<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span> context.getCallHandler().service(r1, r2);<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span> } catch (RestException e) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span> r2.sendError(SC_INTERNAL_SERVER_ERROR, e.getLocalizedMessage());<a name="line.159"></a>
-<span class="sourceLineNo">160</span> } catch (Throwable e) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span> r2.sendError(SC_INTERNAL_SERVER_ERROR, e.getLocalizedMessage());<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><a name="line.164"></a>
-<span class="sourceLineNo">165</span> /**<a name="line.165"></a>
-<span class="sourceLineNo">166</span> * Returns the read-only context object that contains all the configuration information about this resource.<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> * This object is <jk>null</jk> during the call to {@link #init(RestConfig)} but is populated by the time<a name="line.169"></a>
-<span class="sourceLineNo">170</span> * {@link #init()} is called.<a name="line.170"></a>
-<span class="sourceLineNo">171</span> *<a name="line.171"></a>
-<span class="sourceLineNo">172</span> * <p><a name="line.172"></a>
-<span class="sourceLineNo">173</span> * Resource classes that don't extend from {@link RestServlet} can add the following method to their class to get<a name="line.173"></a>
-<span class="sourceLineNo">174</span> * access to this context object:<a name="line.174"></a>
-<span class="sourceLineNo">175</span> * <p class='bcode'><a name="line.175"></a>
-<span class="sourceLineNo">176</span> * <jk>public void</jk> init(RestServletContext context) <jk>throws</jk> Exception;<a name="line.176"></a>
-<span class="sourceLineNo">177</span> * </p><a name="line.177"></a>
-<span class="sourceLineNo">178</span> *<a name="line.178"></a>
-<span class="sourceLineNo">179</span> * @return The context information on this servlet.<a name="line.179"></a>
-<span class="sourceLineNo">180</span> */<a name="line.180"></a>
-<span class="sourceLineNo">181</span> protected RestContext getContext() {<a name="line.181"></a>
-<span class="sourceLineNo">182</span> return context;<a name="line.182"></a>
-<span class="sourceLineNo">183</span> }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span> /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span> * Callback method for listening for successful completion of requests.<a name="line.186"></a>
-<span class="sourceLineNo">187</span> *<a name="line.187"></a>
-<span class="sourceLineNo">188</span> * <p><a name="line.188"></a>
-<span class="sourceLineNo">189</span> * Subclasses can override this method for gathering performance statistics.<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 implementation does nothing.<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> * Resources that don't extend from {@link RestServlet} can implement an equivalent method by overriding the<a name="line.195"></a>
-<span class="sourceLineNo">196</span> * {@link RestCallHandler#onSuccess(RestRequest, RestResponse, long)} method.<a name="line.196"></a>
-<span class="sourceLineNo">197</span> *<a name="line.197"></a>
-<span class="sourceLineNo">198</span> * @param req The HTTP request.<a name="line.198"></a>
-<span class="sourceLineNo">199</span> * @param res The HTTP response.<a name="line.199"></a>
-<span class="sourceLineNo">200</span> * @param time The time in milliseconds it took to process the request.<a name="line.200"></a>
-<span class="sourceLineNo">201</span> */<a name="line.201"></a>
-<span class="sourceLineNo">202</span> protected void onSuccess(RestRequest req, RestResponse res, long time) {}<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span> /**<a name="line.204"></a>
-<span class="sourceLineNo">205</span> * Callback method that gets invoked right before the REST Java method is invoked.<a name="line.205"></a>
-<span class="sourceLineNo">206</span> *<a name="line.206"></a>
-<span class="sourceLineNo">207</span> * <p><a name="line.207"></a>
-<span class="sourceLineNo">208</span> * Subclasses can override this method to override request headers or set request-duration properties before the<a name="line.208"></a>
-<span class="sourceLineNo">209</span> * Java method is invoked.<a name="line.209"></a>
-<span class="sourceLineNo">210</span> *<a name="line.210"></a>
-<span class="sourceLineNo">211</span> * <p><a name="line.211"></a>
-<span class="sourceLineNo">212</span> * Resources that don't extend from {@link RestServlet} can implement an equivalent method by overriding the<a name="line.212"></a>
-<span class="sourceLineNo">213</span> * {@link RestCallHandler#onPreCall(RestRequest)} method.<a name="line.213"></a>
-<span class="sourceLineNo">214</span> *<a name="line.214"></a>
-<span class="sourceLineNo">215</span> * @param req The HTTP servlet request object.<a name="line.215"></a>
-<span class="sourceLineNo">216</span> * @throws RestException If any error occurs.<a name="line.216"></a>
-<span class="sourceLineNo">217</span> */<a name="line.217"></a>
-<span class="sourceLineNo">218</span> protected void onPreCall(RestRequest req) throws RestException {}<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span> /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span> * Callback method that gets invoked right after the REST Java method is invoked, but before the serializer is<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * invoked.<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> * Subclasses can override this method to override request and response headers, or set/override properties used by<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * the serializer.<a name="line.226"></a>
+<span class="sourceLineNo">051</span> rsc.init(this);<a name="line.51"></a>
+<span class="sourceLineNo">052</span> RestContext context = createContext(rsc);<a name="line.52"></a>
+<span class="sourceLineNo">053</span> super.init(servletConfig);<a name="line.53"></a>
+<span class="sourceLineNo">054</span> context.postInit();<a name="line.54"></a>
+<span class="sourceLineNo">055</span> context.postInitChildFirst();<a name="line.55"></a>
+<span class="sourceLineNo">056</span> } catch (RestException e) {<a name="line.56"></a>
+<span class="sourceLineNo">057</span> // Thrown RestExceptions are simply caught and re-thrown on subsequent calls to service().<a name="line.57"></a>
+<span class="sourceLineNo">058</span> initException = e;<a name="line.58"></a>
+<span class="sourceLineNo">059</span> log(SEVERE, e, "Servlet init error on class ''{0}''", getClass().getName());<a name="line.59"></a>
+<span class="sourceLineNo">060</span> } catch (ServletException e) {<a name="line.60"></a>
+<span class="sourceLineNo">061</span> initException = e;<a name="line.61"></a>
+<span class="sourceLineNo">062</span> log(SEVERE, e, "Servlet init error on class ''{0}''", getClass().getName());<a name="line.62"></a>
+<span class="sourceLineNo">063</span> throw e;<a name="line.63"></a>
+<span class="sourceLineNo">064</span> } catch (Exception e) {<a name="line.64"></a>
+<span class="sourceLineNo">065</span> initException = e;<a name="line.65"></a>
+<span class="sourceLineNo">066</span> log(SEVERE, e, "Servlet init error on class ''{0}''", getClass().getName());<a name="line.66"></a>
+<span class="sourceLineNo">067</span> throw new ServletException(e);<a name="line.67"></a>
+<span class="sourceLineNo">068</span> } catch (Throwable e) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span> initException = new Exception(e);<a name="line.69"></a>
+<span class="sourceLineNo">070</span> log(SEVERE, e, "Servlet init error on class ''{0}''", getClass().getName());<a name="line.70"></a>
+<span class="sourceLineNo">071</span> throw new ServletException(e);<a name="line.71"></a>
+<span class="sourceLineNo">072</span> } finally {<a name="line.72"></a>
+<span class="sourceLineNo">073</span> isInitialized = true;<a name="line.73"></a>
+<span class="sourceLineNo">074</span> }<a name="line.74"></a>
+<span class="sourceLineNo">075</span> }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span> /*<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * Bypasses the init(ServletConfig) method and just calls the super.init(ServletConfig) method directly.<a name="line.78"></a>
+<span class="sourceLineNo">079</span> * Used when subclasses of RestServlet are attached as child resources.<a name="line.79"></a>
+<span class="sourceLineNo">080</span> */<a name="line.80"></a>
+<span class="sourceLineNo">081</span> void innerInit(ServletConfig servletConfig) throws ServletException {<a name="line.81"></a>
+<span class="sourceLineNo">082</span> super.init(servletConfig);<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> * Sets the context object for this servlet.<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * Used when subclasses of RestServlet are attached as child resources.<a name="line.87"></a>
+<span class="sourceLineNo">088</span> */<a name="line.88"></a>
+<span class="sourceLineNo">089</span> void setContext(RestContext context) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span> this.config = context.config;<a name="line.90"></a>
+<span class="sourceLineNo">091</span> this.context = context;<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> * Convenience method if you want to perform initialization on your resource after all configuration settings<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * have been made.<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> * This allows you to get access to the {@link RestContext} object during initialization.<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * <p><a name="line.101"></a>
+<span class="sourceLineNo">102</span> * The default implementation does nothing.<a name="line.102"></a>
+<span class="sourceLineNo">103</span> *<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * @param context The servlet context containing all the set-in-stone configurations for this resource.<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * @throws Exception Any exception can be thrown to signal an initialization failure.<a name="line.105"></a>
+<span class="sourceLineNo">106</span> */<a name="line.106"></a>
+<span class="sourceLineNo">107</span> public synchronized void init(RestContext context) throws Exception {}<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> private synchronized RestContext createContext(RestConfig config) throws Exception {<a name="line.110"></a>
+<span class="sourceLineNo">111</span> if (! isInitialized) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span> this.config = config;<a name="line.112"></a>
+<span class="sourceLineNo">113</span> this.context = new RestContext(this, this.getServletContext(), config);<a name="line.113"></a>
+<span class="sourceLineNo">114</span> this.isInitialized = true;<a name="line.114"></a>
+<span class="sourceLineNo">115</span> }<a name="line.115"></a>
+<span class="sourceLineNo">116</span> return context;<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> //--------------------------------------------------------------------------------<a name="line.120"></a>
+<span class="sourceLineNo">121</span> // Other methods<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> /**<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * The main service method.<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> * Subclasses can optionally override this method if they want to tailor the behavior of requests.<a name="line.128"></a>
+<span class="sourceLineNo">129</span> */<a name="line.129"></a>
+<span class="sourceLineNo">130</span> @Override /* Servlet */<a name="line.130"></a>
+<span class="sourceLineNo">131</span> public void service(HttpServletRequest r1, HttpServletResponse r2) throws ServletException, IOException {<a name="line.131"></a>
+<span class="sourceLineNo">132</span> try {<a name="line.132"></a>
+<span class="sourceLineNo">133</span> if (initException != null) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span> if (initException instanceof RestException)<a name="line.134"></a>
+<span class="sourceLineNo">135</span> throw (RestException)initException;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> throw new RestException(SC_INTERNAL_SERVER_ERROR, initException);<a name="line.136"></a>
+<span class="sourceLineNo">137</span> }<a name="line.137"></a>
+<span class="sourceLineNo">138</span> if (context == null)<a name="line.138"></a>
+<span class="sourceLineNo">139</span> throw new RestException(SC_INTERNAL_SERVER_ERROR, "Servlet {0} not initialized. init(RestConfig) was not called. This can occur if you've overridden this method but didn't call super.init(RestConfig).", getClass().getName());<a name="line.139"></a>
+<span class="sourceLineNo">140</span> if (! isInitialized)<a name="line.140"></a>
+<span class="sourceLineNo">141</span> throw new RestException(SC_INTERNAL_SERVER_ERROR, "Servlet {0} has not been initialized", getClass().getName());<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span> context.getCallHandler().service(r1, r2);<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span> } catch (RestException e) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span> r2.sendError(SC_INTERNAL_SERVER_ERROR, e.getLocalizedMessage());<a name="line.146"></a>
+<span class="sourceLineNo">147</span> } catch (Throwable e) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span> r2.sendError(SC_INTERNAL_SERVER_ERROR, e.getLocalizedMessage());<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> /**<a name="line.152"></a>
+<span class="sourceLineNo">153</span> * Returns the read-only context object that contains all the configuration information about this resource.<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> * This object is <jk>null</jk> during the call to {@link #init(ServletConfig)} but is populated by the time<a name="line.156"></a>
+<span class="sourceLineNo">157</span> * {@link #init()} is called.<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> * Resource classes that don't extend from {@link RestServlet} can add the following method to their class to get<a name="line.160"></a>
+<span class="sourceLineNo">161</span> * access to this context object:<a name="line.161"></a>
+<span class="sourceLineNo">162</span> * <p class='bcode'><a name="line.162"></a>
+<span class="sourceLineNo">163</span> * <jk>public void</jk> init(RestServletContext context) <jk>throws</jk> Exception;<a name="line.163"></a>
+<span class="sourceLineNo">164</span> * </p><a name="line.164"></a>
+<span class="sourceLineNo">165</span> *<a name="line.165"></a>
+<span class="sourceLineNo">166</span> * @return The context information on this servlet.<a name="line.166"></a>
+<span class="sourceLineNo">167</span> */<a name="line.167"></a>
+<span class="sourceLineNo">168</span> protected RestContext getContext() {<a name="line.168"></a>
+<span class="sourceLineNo">169</span> return context;<a name="line.169"></a>
+<span class="sourceLineNo">170</span> }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span> /**<a name="line.172"></a>
+<span class="sourceLineNo">173</span> * Convenience method for calling <code>getContext().getLogger().log(level, msg, args);</code><a name="line.173"></a>
+<span class="sourceLineNo">174</span> *<a name="line.174"></a>
+<span class="sourceLineNo">175</span> * @param level The log level.<a name="line.175"></a>
+<span class="sourceLineNo">176</span> * @param msg The message to log.<a name="line.176"></a>
+<span class="sourceLineNo">177</span> * @param args Optional {@link MessageFormat}-style arguments.<a name="line.177"></a>
+<span class="sourceLineNo">178</span> */<a name="line.178"></a>
+<span class="sourceLineNo">179</span> protected void log(Level level, String msg, Object...args) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span> if (context != null)<a name="line.180"></a>
+<span class="sourceLineNo">181</span> context.getLogger().log(level, msg, args);<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> /**<a name="line.184"></a>
+<span class="sourceLineNo">185</span> * Convenience method for calling <code>getContext().getLogger().log(level, cause, msg, args);</code><a name="line.185"></a>
+<span class="sourceLineNo">186</span> *<a name="line.186"></a>
+<span class="sourceLineNo">187</span> * @param level The log level.<a name="line.187"></a>
+<span class="sourceLineNo">188</span> * @param cause The cause.<a name="line.188"></a>
+<span class="sourceLineNo">189</span> * @param msg The message to log.<a name="line.189"></a>
+<span class="sourceLineNo">190</span> * @param args Optional {@link MessageFormat}-style arguments.<a name="line.190"></a>
+<span class="sourceLineNo">191</span> */<a name="line.191"></a>
+<span class="sourceLineNo">192</span> protected void log(Level level, Throwable cause, String msg, Object...args) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span> if (context != null)<a name="line.193"></a>
+<span class="sourceLineNo">194</span> context.getLogger().log(level, cause, msg, args);<a name="line.194"></a>
+<span class="sourceLineNo">195</span> else {<a name="line.195"></a>
+<span class="sourceLineNo">196</span> // If context failed to initialize, log to the console.<a name="line.196"></a>
+<span class="sourceLineNo">197</span> System.err.println(format(msg, args));<a name="line.197"></a>
+<span class="sourceLineNo">198</span> if (cause != null)<a name="line.198"></a>
+<span class="sourceLineNo">199</span> cause.printStackTrace();<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> @Override /* GenericServlet */<a name="line.203"></a>
+<span class="sourceLineNo">204</span> public RestConfig getServletConfig() {<a name="line.204"></a>
+<span class="sourceLineNo">205</span> return config;<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> @Override /* GenericServlet */<a name="line.208"></a>
+<span class="sourceLineNo">209</span> public void destroy() {<a name="line.209"></a>
+<span class="sourceLineNo">210</span> if (context != null)<a name="line.210"></a>
+<span class="sourceLineNo">211</span> context.destroy();<a name="line.211"></a>
+<span class="sourceLineNo">212</span> super.destroy();<a name="line.212"></a>
+<span class="sourceLineNo">213</span> }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span> /**<a name="line.215"></a>
+<span class="sourceLineNo">216</span> * Convenience method for calling <code>getContext().getMessages();</code><a name="line.216"></a>
+<span class="sourceLineNo">217</span> *<a name="line.217"></a>
+<span class="sourceLineNo">218</span> * @return The resource bundle for this resource. Never <jk>null</jk>.<a name="line.218"></a>
+<span class="sourceLineNo">219</span> * @see RestContext#getProperties()<a name="line.219"></a>
+<span class="sourceLineNo">220</span> */<a name="line.220"></a>
+<span class="sourceLineNo">221</span> public MessageBundle getMessages() {<a name="line.221"></a>
+<span class="sourceLineNo">222</span> return context.getMessages();<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> * Convenience method for calling <code>getContext().getProperties();</code><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> * Resources that don't extend from {@link RestServlet} can implement an equivalent method by overriding the<a name="line.229"></a>
-<span class="sourceLineNo">230</span> * {@link RestCallHandler#onPostCall(RestRequest,RestResponse)} method.<a name="line.230"></a>
-<span class="sourceLineNo">231</span> *<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * @param req The HTTP servlet request object.<a name="line.232"></a>
-<span class="sourceLineNo">233</span> * @param res The HTTP servlet response object.<a name="line.233"></a>
-<span class="sourceLineNo">234</span> * @throws RestException If any error occurs.<a name="line.234"></a>
-<span class="sourceLineNo">235</span> */<a name="line.235"></a>
-<span class="sourceLineNo">236</span> protected void onPostCall(RestRequest req, RestResponse res) throws RestException {}<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span> /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span> * Convenience method for calling <code>getContext().getLogger().log(level, msg, args);</code><a name="line.239"></a>
-<span class="sourceLineNo">240</span> *<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * @param level The log level.<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * @param msg The message to log.<a name="line.242"></a>
-<span class="sourceLineNo">243</span> * @param args Optional {@link MessageFormat}-style arguments.<a name="line.243"></a>
-<span class="sourceLineNo">244</span> */<a name="line.244"></a>
-<span class="sourceLineNo">245</span> protected void log(Level level, String msg, Object...args) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span> if (context != null)<a name="line.246"></a>
-<span class="sourceLineNo">247</span> context.getLogger().log(level, msg, args);<a name="line.247"></a>
-<span class="sourceLineNo">248</span> }<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span> /**<a name="line.250"></a>
-<span class="sourceLineNo">251</span> * Convenience method for calling <code>getContext().getLogger().log(level, cause, msg, args);</code><a name="line.251"></a>
-<span class="sourceLineNo">252</span> *<a name="line.252"></a>
-<span class="sourceLineNo">253</span> * @param level The log level.<a name="line.253"></a>
-<span class="sourceLineNo">254</span> * @param cause The cause.<a name="line.254"></a>
-<span class="sourceLineNo">255</span> * @param msg The message to log.<a name="line.255"></a>
-<span class="sourceLineNo">256</span> * @param args Optional {@link MessageFormat}-style arguments.<a name="line.256"></a>
-<span class="sourceLineNo">257</span> */<a name="line.257"></a>
-<span class="sourceLineNo">258</span> protected void log(Level level, Throwable cause, String msg, Object...args) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span> if (context != null)<a name="line.259"></a>
-<span class="sourceLineNo">260</span> context.getLogger().log(level, cause, msg, args);<a name="line.260"></a>
-<span class="sourceLineNo">261</span> else {<a name="line.261"></a>
-<span class="sourceLineNo">262</span> // If context failed to initialize, log to the console.<a name="line.262"></a>
-<span class="sourceLineNo">263</span> System.err.println(format(msg, args));<a name="line.263"></a>
-<span class="sourceLineNo">264</span> if (cause != null)<a name="line.264"></a>
-<span class="sourceLineNo">265</span> cause.printStackTrace();<a name="line.265"></a>
-<span class="sourceLineNo">266</span> }<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 /* GenericServlet */<a name="line.269"></a>
-<span class="sourceLineNo">270</span> public RestConfig getServletConfig() {<a name="line.270"></a>
-<span class="sourceLineNo">271</span> return config;<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> @Override /* GenericServlet */<a name="line.274"></a>
-<span class="sourceLineNo">275</span> public void destroy() {<a name="line.275"></a>
-<span class="sourceLineNo">276</span> if (context != null)<a name="line.276"></a>
-<span class="sourceLineNo">277</span> context.destroy();<a name="line.277"></a>
-<span class="sourceLineNo">278</span> super.destroy();<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> * Convenience method for calling <code>getContext().getMessages();</code><a name="line.282"></a>
-<span class="sourceLineNo">283</span> *<a name="line.283"></a>
-<span class="sourceLineNo">284</span> * @return The resource bundle for this resource. Never <jk>null</jk>.<a name="line.284"></a>
-<span class="sourceLineNo">285</span> * @see RestContext#getProperties()<a name="line.285"></a>
-<span class="sourceLineNo">286</span> */<a name="line.286"></a>
-<span class="sourceLineNo">287</span> public MessageBundle getMessages() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span> return context.getMessages();<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> /**<a name="line.291"></a>
-<span class="sourceLineNo">292</span> * Convenience method for calling <code>getContext().getProperties();</code><a name="line.292"></a>
-<span class="sourceLineNo">293</span> *<a name="line.293"></a>
-<span class="sourceLineNo">294</span> * @return The resource properties as an {@link ObjectMap}.<a name="line.294"></a>
-<span class="sourceLineNo">295</span> * @see RestContext#getProperties()<a name="line.295"></a>
-<span class="sourceLineNo">296</span> */<a name="line.296"></a>
-<span class="sourceLineNo">297</span> public ObjectMap getProperties() {<a name="line.297"></a>
-<span class="sourceLineNo">298</span> return getContext().getProperties();<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> * Convenience method for calling <code>getContext().getBeanContext();</code><a name="line.302"></a>
-<span class="sourceLineNo">303</span> *<a name="line.303"></a>
-<span class="sourceLineNo">304</span> * @return The bean context used for parsing path variables and header values.<a name="line.304"></a>
-<span class="sourceLineNo">305</span> * @see RestContext#getBeanContext()<a name="line.305"></a>
-<span class="sourceLineNo">306</span> */<a name="line.306"></a>
-<span class="sourceLineNo">307</span> public BeanContext getBeanContext() {<a name="line.307"></a>
-<span class="sourceLineNo">308</span> return getContext().getBeanContext();<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">228</span> * @return The resource properties as an {@link ObjectMap}.<a name="line.228"></a>
+<span class="sourceLineNo">229</span> * @see RestContext#getProperties()<a name="line.229"></a>
+<span class="sourceLineNo">230</span> */<a name="line.230"></a>
+<span class="sourceLineNo">231</span> public ObjectMap getProperties() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span> return getContext().getProperties();<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> /**<a name="line.235"></a>
+<span class="sourceLineNo">236</span> * Convenience method for calling <code>getContext().getBeanContext();</code><a name="line.236"></a>
+<span class="sourceLineNo">237</span> *<a name="line.237"></a>
+<span class="sourceLineNo">238</span> * @return The bean context used for parsing path variables and header values.<a name="line.238"></a>
+<span class="sourceLineNo">239</span> * @see RestContext#getBeanContext()<a name="line.239"></a>
+<span class="sourceLineNo">240</span> */<a name="line.240"></a>
+<span class="sourceLineNo">241</span> public BeanContext getBeanContext() {<a name="line.241"></a>
+<span class="sourceLineNo">242</span> return getContext().getBeanContext();<a name="line.242"></a>
+<span class="sourceLineNo">243</span> }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>}<a name="line.244"></a>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 aaeaf1e..17ade01 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
@@ -203,7 +203,7 @@
<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/devops.css"<a name="line.198"></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>
[08/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 ae5b08a..3b7caa2 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
@@ -23,331 +23,337 @@
<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.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> flags={REST_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> @Override /* RestServlet */<a name="line.66"></a>
-<span class="sourceLineNo">067</span> public synchronized void init(RestConfig config) throws Exception {<a name="line.67"></a>
-<span class="sourceLineNo">068</span> super.init(config);<a name="line.68"></a>
-<span class="sourceLineNo">069</span> ConfigFile cf = config.getConfigFile();<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span> logDir = new File(cf.getString("Logging/logDir", "."));<a name="line.71"></a>
-<span class="sourceLineNo">072</span> leFormatter = new LogEntryFormatter(<a name="line.72"></a>
-<span class="sourceLineNo">073</span> cf.getString("Logging/format", "[{date} {level}] {msg}%n"),<a name="line.73"></a>
-<span class="sourceLineNo">074</span> cf.getString("Logging/dateFormat", "yyyy.MM.dd hh:mm:ss"),<a name="line.74"></a>
-<span class="sourceLineNo">075</span> cf.getBoolean("Logging/useStackTraceHashes")<a name="line.75"></a>
-<span class="sourceLineNo">076</span> );<a name="line.76"></a>
-<span class="sourceLineNo">077</span> }<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span> /**<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * [GET /*] - Get file details or directory listing.<a name="line.80"></a>
-<span class="sourceLineNo">081</span> *<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * @param req The HTTP request<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * @param res The HTTP response<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * @param properties The writable properties for setting the descriptions.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * @param path The log file path.<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * @return The log file.<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * @throws Exception<a name="line.87"></a>
-<span class="sourceLineNo">088</span> */<a name="line.88"></a>
-<span class="sourceLineNo">089</span> @RestMethod(<a name="line.89"></a>
-<span class="sourceLineNo">090</span> name="GET",<a name="line.90"></a>
-<span class="sourceLineNo">091</span> path="/*",<a name="line.91"></a>
-<span class="sourceLineNo">092</span> swagger=@MethodSwagger(<a name="line.92"></a>
-<span class="sourceLineNo">093</span> responses={@Response(200),@Response(404)}<a name="line.93"></a>
-<span class="sourceLineNo">094</span> )<a name="line.94"></a>
-<span class="sourceLineNo">095</span> )<a name="line.95"></a>
-<span class="sourceLineNo">096</span> public Object getFileOrDirectory(RestRequest req, RestResponse res, @Properties ObjectMap properties, @PathRemainder String path) throws Exception {<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span> File f = getFile(path);<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span> if (f.isDirectory()) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span> Set<FileResource> l = new TreeSet<FileResource>(new FileResourceComparator());<a name="line.101"></a>
-<span class="sourceLineNo">102</span> File[] files = f.listFiles(filter);<a name="line.102"></a>
-<span class="sourceLineNo">103</span> if (files != null) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span> for (File fc : files) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span> URI fUrl = new URI("servlet:/" + fc.getName());<a name="line.105"></a>
-<span class="sourceLineNo">106</span> l.add(new FileResource(fc, fUrl));<a name="line.106"></a>
-<span class="sourceLineNo">107</span> }<a name="line.107"></a>
-<span class="sourceLineNo">108</span> }<a name="line.108"></a>
-<span class="sourceLineNo">109</span> return l;<a name="line.109"></a>
-<span class="sourceLineNo">110</span> }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span> return new FileResource(f, new URI("servlet:/"));<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> * [VIEW /*] - Retrieve the contents of a log 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> * @param res The HTTP response.<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * @param path The log file path.<a name="line.120"></a>
-<span class="sourceLineNo">121</span> * @param properties The writable properties for setting the descriptions.<a name="line.121"></a>
-<span class="sourceLineNo">122</span> * @param highlight If <code>true</code>, add color highlighting based on severity.<a name="line.122"></a>
-<span class="sourceLineNo">123</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.123"></a>
-<span class="sourceLineNo">124</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.124"></a>
-<span class="sourceLineNo">125</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.125"></a>
-<span class="sourceLineNo">126</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.126"></a>
-<span class="sourceLineNo">127</span> * @param severity Optional severity filter. Only show log entries with the specified severity. Example: "&amp;severity=(ERROR,WARN)".<a name="line.127"></a>
-<span class="sourceLineNo">128</span> * @throws Exception<a name="line.128"></a>
-<span class="sourceLineNo">129</span> */<a name="line.129"></a>
-<span class="sourceLineNo">130</span> @RestMethod(<a name="line.130"></a>
-<span class="sourceLineNo">131</span> name="VIEW",<a name="line.131"></a>
-<span class="sourceLineNo">132</span> path="/*",<a name="line.132"></a>
-<span class="sourceLineNo">133</span> swagger=@MethodSwagger(<a name="line.133"></a>
-<span class="sourceLineNo">134</span> responses={@Response(200),@Response(404)}<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> @SuppressWarnings("nls")<a name="line.137"></a>
-<span class="sourceLineNo">138</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.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span> File f = getFile(path);<a name="line.140"></a>
-<span class="sourceLineNo">141</span> if (f.isDirectory())<a name="line.141"></a>
-<span class="sourceLineNo">142</span> throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span> Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.144"></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> if (! highlight) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span> Object o = getReader(f, startDate, endDate, thread, loggers, severity);<a name="line.147"></a>
-<span class="sourceLineNo">148</span> res.setContentType("text/plain");<a name="line.148"></a>
-<span class="sourceLineNo">149</span> if (o instanceof Reader)<a name="line.149"></a>
-<span class="sourceLineNo">150</span> res.setOutput(o);<a name="line.150"></a>
-<span class="sourceLineNo">151</span> else {<a name="line.151"></a>
-<span class="sourceLineNo">152</span> LogParser p = (LogParser)o;<a name="line.152"></a>
-<span class="sourceLineNo">153</span> Writer w = res.getNegotiatedWriter();<a name="line.153"></a>
-<span class="sourceLineNo">154</span> try {<a name="line.154"></a>
-<span class="sourceLineNo">155</span> p.writeTo(w);<a name="line.155"></a>
-<span class="sourceLineNo">156</span> } finally {<a name="line.156"></a>
-<span class="sourceLineNo">157</span> w.flush();<a name="line.157"></a>
-<span class="sourceLineNo">158</span> w.close();<a name="line.158"></a>
-<span class="sourceLineNo">159</span> }<a name="line.159"></a>
-<span class="sourceLineNo">160</span> }<a name="line.160"></a>
-<span class="sourceLineNo">161</span> return;<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> res.setContentType("text/html");<a name="line.164"></a>
-<span class="sourceLineNo">165</span> PrintWriter w = res.getNegotiatedWriter();<a name="line.165"></a>
-<span class="sourceLineNo">166</span> try {<a name="line.166"></a>
-<span class="sourceLineNo">167</span> w.println("<html><body style='font-family:monospace;font-size:8pt;white-space:pre;'>");<a name="line.167"></a>
-<span class="sourceLineNo">168</span> LogParser lp = getLogParser(f, startDate, endDate, thread, loggers, severity);<a name="line.168"></a>
-<span class="sourceLineNo">169</span> try {<a name="line.169"></a>
-<span class="sourceLineNo">170</span> if (! lp.hasNext())<a name="line.170"></a>
-<span class="sourceLineNo">171</span> w.append("<span style='color:gray'>[EMPTY]</span>");<a name="line.171"></a>
-<span class="sourceLineNo">172</span> else for (LogParser.Entry le : lp) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span> char s = le.severity.charAt(0);<a name="line.173"></a>
-<span class="sourceLineNo">174</span> String color = "black";<a name="line.174"></a>
-<span class="sourceLineNo">175</span> //SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST<a name="line.175"></a>
-<span class="sourceLineNo">176</span> if (s == 'I')<a name="line.176"></a>
-<span class="sourceLineNo">177</span> color = "#006400";<a name="line.177"></a>
-<span class="sourceLineNo">178</span> else if (s == 'W')<a name="line.178"></a>
-<span class="sourceLineNo">179</span> color = "#CC8400";<a name="line.179"></a>
-<span class="sourceLineNo">180</span> else if (s == 'E' || s == 'S')<a name="line.180"></a>
-<span class="sourceLineNo">181</span> color = "#DD0000";<a name="line.181"></a>
-<span class="sourceLineNo">182</span> else if (s == 'D' || s == 'F' || s == 'T')<a name="line.182"></a>
-<span class="sourceLineNo">183</span> color = "#000064";<a name="line.183"></a>
-<span class="sourceLineNo">184</span> w.append("<span style='color:").append(color).append("'>");<a name="line.184"></a>
-<span class="sourceLineNo">185</span> le.appendHtml(w).append("</span>");<a name="line.185"></a>
-<span class="sourceLineNo">186</span> }<a name="line.186"></a>
-<span class="sourceLineNo">187</span> w.append("</body></html>");<a name="line.187"></a>
-<span class="sourceLineNo">188</span> } finally {<a name="line.188"></a>
-<span class="sourceLineNo">189</span> lp.close();<a name="line.189"></a>
-<span class="sourceLineNo">190</span> }<a name="line.190"></a>
-<span class="sourceLineNo">191</span> } finally {<a name="line.191"></a>
-<span class="sourceLineNo">192</span> w.close();<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> /**<a name="line.196"></a>
-<span class="sourceLineNo">197</span> * [VIEW /*] - Retrieve the contents of a log file as parsed entries.<a name="line.197"></a>
-<span class="sourceLineNo">198</span> *<a name="line.198"></a>
-<span class="sourceLineNo">199</span> * @param req The HTTP request.<a name="line.199"></a>
-<span class="sourceLineNo">200</span> * @param path The log file path.<a name="line.200"></a>
-<span class="sourceLineNo">201</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.201"></a>
-<span class="sourceLineNo">202</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.202"></a>
-<span class="sourceLineNo">203</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.203"></a>
-<span class="sourceLineNo">204</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.204"></a>
-<span class="sourceLineNo">205</span> * @param severity Optional severity filter. Only show log entries with the specified severity. Example: "&amp;severity=(ERROR,WARN)".<a name="line.205"></a>
-<span class="sourceLineNo">206</span> * @return The parsed contents of the log file.<a name="line.206"></a>
-<span class="sourceLineNo">207</span> * @throws Exception<a name="line.207"></a>
-<span class="sourceLineNo">208</span> */<a name="line.208"></a>
-<span class="sourceLineNo">209</span> @RestMethod(<a name="line.209"></a>
-<span class="sourceLineNo">210</span> name="PARSE",<a name="line.210"></a>
-<span class="sourceLineNo">211</span> path="/*",<a name="line.211"></a>
-<span class="sourceLineNo">212</span> converters=Queryable.class,<a name="line.212"></a>
-<span class="sourceLineNo">213</span> swagger=@MethodSwagger(<a name="line.213"></a>
-<span class="sourceLineNo">214</span> responses={@Response(200),@Response(404)}<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> 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.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span> File f = getFile(path);<a name="line.219"></a>
-<span class="sourceLineNo">220</span> Date startDate = parseISO8601Date(start), endDate = parseISO8601Date(end);<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span> if (f.isDirectory())<a name="line.222"></a>
-<span class="sourceLineNo">223</span> throw new RestException(SC_METHOD_NOT_ALLOWED, "View not available on directories");<a name="line.223"></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> return getLogParser(f, startDate, endDate, thread, loggers, severity);<a name="line.225"></a>
-<span class="sourceLineNo">226</span> }<a name="line.226"></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> /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span> * [DOWNLOAD /*] - Download file.<a name="line.229"></a>
-<span class="sourceLineNo">230</span> *<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> * @param path The log file path.<a name="line.232"></a>
-<span class="sourceLineNo">233</span> * @return The contents of the log file.<a name="line.233"></a>
-<span class="sourceLineNo">234</span> * @throws Exception<a name="line.234"></a>
-<span class="sourceLineNo">235</span> */<a name="line.235"></a>
-<span class="sourceLineNo">236</span> @RestMethod(<a name="line.236"></a>
-<span class="sourceLineNo">237</span> name="DOWNLOAD",<a name="line.237"></a>
-<span class="sourceLineNo">238</span> path="/*",<a name="line.238"></a>
-<span class="sourceLineNo">239</span> swagger=@MethodSwagger(<a name="line.239"></a>
-<span class="sourceLineNo">240</span> responses={@Response(200),@Response(404)}<a name="line.240"></a>
-<span class="sourceLineNo">241</span> )<a name="line.241"></a>
-<span class="sourceLineNo">242</span> )<a name="line.242"></a>
-<span class="sourceLineNo">243</span> public Object downloadFile(RestResponse res, @PathRemainder String path) throws Exception {<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span> File f = getFile(path);<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/octet-stream");<a name="line.250"></a>
-<span class="sourceLineNo">251</span> res.setContentLength((int)f.length());<a name="line.251"></a>
-<span class="sourceLineNo">252</span> return new FileInputStream(f);<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> /**<a name="line.255"></a>
-<span class="sourceLineNo">256</span> * [DELETE /*] - Delete a file.<a name="line.256"></a>
-<span class="sourceLineNo">257</span> *<a name="line.257"></a>
-<span class="sourceLineNo">258</span> * @param path The log file path.<a name="line.258"></a>
-<span class="sourceLineNo">259</span> * @return A redirect object to the root.<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> @RestMethod(<a name="line.262"></a>
-<span class="sourceLineNo">263</span> name="DELETE",<a name="line.263"></a>
-<span class="sourceLineNo">264</span> path="/*",<a name="line.264"></a>
-<span class="sourceLineNo">265</span> swagger=@MethodSwagger(<a name="line.265"></a>
-<span class="sourceLineNo">266</span> responses={@Response(200),@Response(404)}<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> public Object deleteFile(@PathRemainder String path) throws Exception {<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span> File f = getFile(path);<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span> if (f.isDirectory())<a name="line.273"></a>
-<span class="sourceLineNo">274</span> throw new RestException(SC_BAD_REQUEST, "Delete not available on directories.");<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span> if (f.canWrite())<a name="line.276"></a>
-<span class="sourceLineNo">277</span> if (! f.delete())<a name="line.277"></a>
-<span class="sourceLineNo">278</span> throw new RestException(SC_FORBIDDEN, "Could not delete file.");<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span> return new Redirect(path + "/..");<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> private static BufferedReader getReader(File f) throws IOException {<a name="line.283"></a>
-<span class="sourceLineNo">284</span> return new BufferedReader(new InputStreamReader(new FileInputStream(f), Charset.defaultCharset()));<a name="line.284"></a>
-<span class="sourceLineNo">285</span> }<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span> private File getFile(String path) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span> if (path != null && path.indexOf("..") != -1)<a name="line.288"></a>
-<span class="sourceLineNo">289</span> throw new RestException(SC_NOT_FOUND, "File not found.");<a name="line.289"></a>
-<span class="sourceLineNo">290</span> File f = (path == null ? logDir : new File(logDir.getAbsolutePath() + '/' + path));<a name="line.290"></a>
-<span class="sourceLineNo">291</span> if (filter.accept(f))<a name="line.291"></a>
-<span class="sourceLineNo">292</span> return f;<a name="line.292"></a>
-<span class="sourceLineNo">293</span> throw new RestException(SC_NOT_FOUND, "File not found.");<a name="line.293"></a>
-<span class="sourceLineNo">294</span> }<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span> /**<a name="line.296"></a>
-<span class="sourceLineNo">297</span> * File bean.<a name="line.297"></a>
-<span class="sourceLineNo">298</span> */<a name="line.298"></a>
-<span class="sourceLineNo">299</span> @SuppressWarnings("javadoc")<a name="line.299"></a>
-<span class="sourceLineNo">300</span> public static class FileResource {<a name="line.300"></a>
-<span class="sourceLineNo">301</span> private File f;<a name="line.301"></a>
-<span class="sourceLineNo">302</span> public String type;<a name="line.302"></a>
-<span class="sourceLineNo">303</span> public Object name;<a name="line.303"></a>
-<span class="sourceLineNo">304</span> public Long size;<a name="line.304"></a>
-<span class="sourceLineNo">305</span> @BeanProperty(swap=DateSwap.DateTimeMedium.class) public Date lastModified;<a name="line.305"></a>
-<span class="sourceLineNo">306</span> public URI view, highlighted, parsed, download, delete;<a name="line.306"></a>
-<span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span> public FileResource(File f, URI uri) throws Exception {<a name="line.308"></a>
-<span class="sourceLineNo">309</span> this.f = f;<a name="line.309"></a>
-<span class="sourceLineNo">310</span> this.type = (f.isDirectory() ? "dir" : "file");<a name="line.310"></a>
-<span class="sourceLineNo">311</span> this.name = f.isDirectory() ? new Link(f.getName(), uri.toString()) : f.getName();<a name="line.311"></a>
-<span class="sourceLineNo">312</span> this.size = f.isDirectory() ? null : f.length();<a name="line.312"></a>
-<span class="sourceLineNo">313</span> this.lastModified = new Date(f.lastModified());<a name="line.313"></a>
-<span class="sourceLineNo">314</span> if (f.canRead() && ! f.isDirectory()) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span> this.view = new URI(uri + "?method=VIEW");<a name="line.315"></a>
-<span class="sourceLineNo">316</span> this.highlighted = new URI(uri + "?method=VIEW&highlight=true");<a name="line.316"></a>
-<span class="sourceLineNo">317</span> this.parsed = new URI(uri + "?method=PARSE");<a name="line.317"></a>
-<span class="sourceLineNo">318</span> this.download = new URI(uri + "?method=DOWNLOAD");<a name="line.318"></a>
-<span class="sourceLineNo">319</span> this.delete = new URI(uri + "?method=DELETE");<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><a name="line.323"></a>
-<span class="sourceLineNo">324</span> private static class FileResourceComparator implements Comparator<FileResource>, Serializable {<a name="line.324"></a>
-<span class="sourceLineNo">325</span> private static final long serialVersionUID = 1L;<a name="line.325"></a>
-<span class="sourceLineNo">326</span> @Override /* Comparator */<a name="line.326"></a>
-<span class="sourceLineNo">327</span> public int compare(FileResource o1, FileResource o2) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span> int c = o1.type.compareTo(o2.type);<a name="line.328"></a>
-<span class="sourceLineNo">329</span> return c != 0 ? c : o1.f.getName().compareTo(o2.f.getName());<a name="line.329"></a>
-<span class="sourceLineNo">330</span> }<a name="line.330"></a>
-<span class="sourceLineNo">331</span> }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</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.333"></a>
-<span class="sourceLineNo">334</span> if (start == null && end == null && thread == null && loggers == null)<a name="line.334"></a>
-<span class="sourceLineNo">335</span> return getReader(f);<a name="line.335"></a>
-<span class="sourceLineNo">336</span> return getLogParser(f, start, end, thread, loggers, severity);<a name="line.336"></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> @BeanProperty(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 LogParser getLogParser(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> return new LogParser(leFormatter, f, start, end, thread, loggers, severity);<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">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>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/rest/RequestBody.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RequestBody.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RequestBody.html
index 140749f..7f6ab59 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RequestBody.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RequestBody.html
@@ -446,8 +446,23 @@
<span class="sourceLineNo">438</span> public final void close() throws IOException {<a name="line.438"></a>
<span class="sourceLineNo">439</span> is.close();<a name="line.439"></a>
<span class="sourceLineNo">440</span> }<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">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span> @Override /* ServletInputStream */<a name="line.442"></a>
+<span class="sourceLineNo">443</span> public boolean isFinished() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span> return false;<a name="line.444"></a>
+<span class="sourceLineNo">445</span> }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span> @Override /* ServletInputStream */<a name="line.447"></a>
+<span class="sourceLineNo">448</span> public boolean isReady() {<a name="line.448"></a>
+<span class="sourceLineNo">449</span> return true;<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 /* ServletInputStream */<a name="line.452"></a>
+<span class="sourceLineNo">453</span> public void setReadListener(ReadListener arg0) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span> throw new NoSuchMethodError();<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>
[23/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 4d3e47b..8f30bb6 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.55">ResourceGroup</a>
+public abstract class <a href="../../../../src-html/org/apache/juneau/microservice/ResourceGroup.html#line.58">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.
@@ -209,8 +209,8 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html
</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/ResourceGroup.html#init-org.apache.juneau.rest.RestConfig-">init</a></span>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> config)</code>
-<div class="block">Resource initialization method.</div>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/ResourceGroup.html#addConfigVars-org.apache.juneau.rest.RestConfig-">addConfigVars</a></span>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> config)</code>
+<div class="block">Initializes the registry URL and rest clent.</div>
</td>
</tr>
</table>
@@ -233,7 +233,7 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html
<!-- -->
</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/juneau/rest/RestServlet.html#log-ja
va.util.logging.Level-java.lang.Throwable-java.lang.String-java.lang.Object...-">log</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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/juneau/rest/RestServlet.html#log-ja
va.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">
@@ -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.55">ResourceGroup</a>()</pre>
+<pre>public <a href="../../../../src-html/org/apache/juneau/microservice/ResourceGroup.html#line.58">ResourceGroup</a>()</pre>
</li>
</ul>
</li>
@@ -287,38 +287,21 @@ extends <a href="../../../../org/apache/juneau/rest/RestServletGroupDefault.html
<!-- -->
</a>
<h3>Method Detail</h3>
-<a name="init-org.apache.juneau.rest.RestConfig-">
+<a name="addConfigVars-org.apache.juneau.rest.RestConfig-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
-<h4>init</h4>
-<pre>public void <a href="../../../../src-html/org/apache/juneau/microservice/ResourceGroup.html#line.58">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"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-">RestServlet</a></code></span></div>
-<div class="block">Resource initialization method.
-
- <p>
- Identical to <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true#init-javax.servlet.ServletConfig-" title="class or interface in javax.servlet"><code>Servlet.init(ServletConfig)</code></a> except the config object provides access to the external config
- file, configuration properties, and variable resolver defined for this resource.
-
- <p>
- Classes can also use <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#init--" title="class or interface in javax.servlet"><code>GenericServlet.init()</code></a> and <a href="../../../../org/apache/juneau/rest/RestServlet.html#getServletConfig--"><code>RestServlet.getServletConfig()</code></a> as well to perform
- initialization.
-
- <p>
- Note that if you override this method, you must first call <code><jk>super</jk>.init(servletConfig)</code>!
-
- <p>
- Resource classes that don't extend from <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> can add this method to their class to get access to
- the config object.</div>
+<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)
+ 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>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-">init</a></code> in class <code><a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>config</code> - The servlet configuration.</dd>
+<dd><code>config</code> - The resource config.</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> - Any exception can be thrown to signal an initialization failure.</dd>
+<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>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/org/apache/juneau/microservice/ResourceJena.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/microservice/ResourceJena.html b/content/site/apidocs/org/apache/juneau/microservice/ResourceJena.html
index 34a75a5..90def9e 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/ResourceJena.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/ResourceJena.html
@@ -176,7 +176,7 @@ extends <a href="../../../../org/apache/juneau/rest/jena/RestServletJenaDefault.
<!-- -->
</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.RestConfig-">init</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-jav
a.lang.String-java.lang.Object...-">log</a>, <a href="../../../../org/apache/juneau/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#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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/juneau/rest/RestServlet.html#log-ja
va.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">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 cdbd461..1a424d9 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/ResourceJenaGroup.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/ResourceJenaGroup.html
@@ -139,7 +139,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/ResourceJenaGroup.html#line.56">ResourceJenaGroup</a>
+public abstract class <a href="../../../../src-html/org/apache/juneau/microservice/ResourceJenaGroup.html#line.59">ResourceJenaGroup</a>
extends <a href="../../../../org/apache/juneau/rest/jena/RestServletJenaGroupDefault.html" title="class in org.apache.juneau.rest.jena">RestServletJenaGroupDefault</a></pre>
<div class="block">Superclass for all REST resource groups.
@@ -205,8 +205,8 @@ extends <a href="../../../../org/apache/juneau/rest/jena/RestServletJenaGroupDef
</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/ResourceJenaGroup.html#init-org.apache.juneau.rest.RestConfig-">init</a></span>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> config)</code>
-<div class="block">Resource initialization method.</div>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/ResourceJenaGroup.html#addConfigVars-org.apache.juneau.rest.RestConfig-">addConfigVars</a></span>(<a href="../../../../org/apache/juneau/rest/RestConfig.html" title="class in org.apache.juneau.rest">RestConfig</a> config)</code>
+<div class="block">Add <code>$ARGS</code> and <code>$MF</code> variable resolvers.</div>
</td>
</tr>
</table>
@@ -229,7 +229,7 @@ extends <a href="../../../../org/apache/juneau/rest/jena/RestServletJenaGroupDef
<!-- -->
</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/juneau/rest/RestServlet.html#log-ja
va.util.logging.Level-java.lang.Throwable-java.lang.String-java.lang.Object...-">log</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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/juneau/rest/RestServlet.html#log-ja
va.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">
@@ -272,7 +272,7 @@ extends <a href="../../../../org/apache/juneau/rest/jena/RestServletJenaGroupDef
<ul class="blockListLast">
<li class="blockList">
<h4>ResourceJenaGroup</h4>
-<pre>public <a href="../../../../src-html/org/apache/juneau/microservice/ResourceJenaGroup.html#line.56">ResourceJenaGroup</a>()</pre>
+<pre>public <a href="../../../../src-html/org/apache/juneau/microservice/ResourceJenaGroup.html#line.59">ResourceJenaGroup</a>()</pre>
</li>
</ul>
</li>
@@ -283,38 +283,21 @@ extends <a href="../../../../org/apache/juneau/rest/jena/RestServletJenaGroupDef
<!-- -->
</a>
<h3>Method Detail</h3>
-<a name="init-org.apache.juneau.rest.RestConfig-">
+<a name="addConfigVars-org.apache.juneau.rest.RestConfig-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
-<h4>init</h4>
-<pre>public void <a href="../../../../src-html/org/apache/juneau/microservice/ResourceJenaGroup.html#line.59">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"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-">RestServlet</a></code></span></div>
-<div class="block">Resource initialization method.
-
- <p>
- Identical to <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html?is-external=true#init-javax.servlet.ServletConfig-" title="class or interface in javax.servlet"><code>Servlet.init(ServletConfig)</code></a> except the config object provides access to the external config
- file, configuration properties, and variable resolver defined for this resource.
-
- <p>
- Classes can also use <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/GenericServlet.html?is-external=true#init--" title="class or interface in javax.servlet"><code>GenericServlet.init()</code></a> and <a href="../../../../org/apache/juneau/rest/RestServlet.html#getServletConfig--"><code>RestServlet.getServletConfig()</code></a> as well to perform
- initialization.
-
- <p>
- Note that if you override this method, you must first call <code><jk>super</jk>.init(servletConfig)</code>!
-
- <p>
- Resource classes that don't extend from <a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><code>RestServlet</code></a> can add this method to their class to get access to
- the config object.</div>
+<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.68">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>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../org/apache/juneau/rest/RestServlet.html#init-org.apache.juneau.rest.RestConfig-">init</a></code> in class <code><a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest">RestServlet</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>config</code> - The servlet configuration.</dd>
+<dd><code>config</code> - The resource config.</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> - Any exception can be thrown to signal an initialization failure.</dd>
+<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>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 1ea90db..dad42fa 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":10,"i10":9,"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};
+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,"i22":10,"i23":10,"i24":10,"i25":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.79">RestMicroservice</a>
+<pre>public class <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.74">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.
@@ -226,84 +226,84 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
</td>
</tr>
<tr id="i6" class="altColor">
-<td class="colFirst"><code>org.eclipse.jetty.servlet.ServletContextHandler</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#getServletContextHandler--">getServletContextHandler</a></span>()</code>
-<div class="block">Returns the underlying servlet context handler.</div>
-</td>
-</tr>
-<tr id="i7" 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="i8" class="altColor">
+<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="i9" class="rowColor">
+<tr id="i8" 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="i10" class="altColor">
+<tr id="i9" 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="i11" class="rowColor">
+<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/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="i12" class="altColor">
+<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/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="i13" class="rowColor">
+<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#onPostStartServer--">onPostStartServer</a></span>()</code>
<div class="block">Called after the Jetty server is started.</div>
</td>
</tr>
-<tr id="i14" class="altColor">
+<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#onPostStopServer--">onPostStopServer</a></span>()</code>
<div class="block">Called after the Jetty server is stopped.</div>
</td>
</tr>
-<tr id="i15" class="rowColor">
+<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#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="i16" class="altColor">
+<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#onStopServer--">onStopServer</a></span>()</code>
<div class="block">Called before the Jetty server is stopped.</div>
</td>
</tr>
-<tr id="i17" class="rowColor">
+<tr id="i16" 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-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="i18" class="altColor">
+<tr id="i17" 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#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="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#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="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#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>
@@ -382,7 +382,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.106">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.102">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>
@@ -407,7 +407,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
<ul class="blockList">
<li class="blockList">
<h4>main</h4>
-<pre>public static void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.96">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.92">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.
@@ -427,7 +427,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.116">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.112">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.
@@ -453,7 +453,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.126">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.
@@ -476,7 +476,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.132">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.
@@ -499,7 +499,7 @@ 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>
+<pre>public int <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.168">getPort</a>()</pre>
<div class="block">Returns the port that this microservice started up on.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -513,7 +513,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
<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>
+<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.176">getURI</a>()</pre>
<div class="block">Returns the URI where this microservice is listening on.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -527,7 +527,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
<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>()
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.263">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.
@@ -610,7 +610,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.351">createServer</a>()
+<pre>protected org.eclipse.jetty.server.Server <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.324">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.
@@ -618,7 +618,8 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
Subclasses can override this method to customize the Jetty server before it is started.
<p>
- The default implementation is configured by the following values in the config file:
+ The default implementation is configured by the following values in the config file
+ if a jetty.xml is not specified via a <code>REST/jettyXml</code> setting:
<p class='bcode'>
<cc>#================================================================================
# REST settings
@@ -635,37 +636,8 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
# Default is Rest-ContextPath in manifest file, or "/".</cc>
<ck>contextPath</ck> =
- <cc># Authentication: NONE, BASIC.
- # Default is Rest-AuthType in manifest file, or NONE.</cc>
- <ck>authType</ck> = NONE
-
- <cc># The BASIC auth username.
- # Default is Rest-LoginUser in manifest file.</cc>
- <ck>loginUser</ck> =
-
- <cc># The BASIC auth password.
- # Default is Rest-LoginPassword in manifest file.</cc>
- <ck>loginPassword</ck> =
-
- <cc># The BASIC auth realm.
- # Default is Rest-AuthRealm in manifest file.</cc>
- <ck>authRealm</ck> =
-
<cc># Enable SSL support.</cc>
- <ck>useSsl</ck> = false
-
- <cc>#================================================================================
- # Bean properties on the org.eclipse.jetty.util.ssl.SslSocketFactory class
- #--------------------------------------------------------------------------------
- # Ignored if REST/useSsl is false.
- #================================================================================</cc>
- <cs>[REST-SslContextFactory]</cs>
- <ck>keyStorePath</ck> = client_keystore.jks
- <ck>keyStorePassword*</ck> = {HRAaRQoT}
- <ck>excludeCipherSuites</ck> = TLS_DHE.*, TLS_EDH.*
- <ck>excludeProtocols</ck> = SSLv3
- <ck>allowRenegotiate</ck> = false
- </p></div>
+ <ck>useSsl</ck> = false</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The newly-created server.</dd>
@@ -680,7 +652,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.420">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.381">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>
@@ -700,7 +672,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.436">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.397">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>
@@ -720,7 +692,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.448">getServer</a>()</pre>
+<pre>public org.eclipse.jetty.server.Server <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.409">getServer</a>()</pre>
<div class="block">Returns the underlying Jetty server.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
@@ -728,27 +700,13 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
</dl>
</li>
</ul>
-<a name="getServletContextHandler--">
-<!-- -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getServletContextHandler</h4>
-<pre>public org.eclipse.jetty.servlet.ServletContextHandler <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.457">getServletContextHandler</a>()</pre>
-<div class="block">Returns the underlying servlet context handler.</div>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>The underlying servlet context handler, or <jk>null</jk> if <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#createServer--"><code>createServer()</code></a> has not yet been called.</dd>
-</dl>
-</li>
-</ul>
<a name="startServer--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>startServer</h4>
-<pre>protected int <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.484">startServer</a>()
+<pre>protected int <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.436">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>.
@@ -768,7 +726,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
<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.537">getResourceMap</a>()
+<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.490">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.
@@ -824,7 +782,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
<ul class="blockList">
<li class="blockList">
<h4>onConfigSave</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.584">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.537">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>
@@ -847,13 +805,37 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
</dl>
</li>
</ul>
+<a name="setJettyXml-java.lang.Object-">
+<!-- -->
+</a>
+<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.576">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>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>jettyXml</code> - The <code>jetty.xml</code>.
+ <br>Can be any of the following:
+ <ul>
+ <li>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> representing the location on the file system.
+ <li>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> containing the contents of the file.
+ <li>A <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang"><code>String</code></a> representing the file system path.
+ </ul></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
<a name="onCreateServer--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onCreateServer</h4>
-<pre>protected void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.619">onCreateServer</a>()</pre>
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.595">onCreateServer</a>()</pre>
<div class="block">Called before <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#createServer--"><code>createServer()</code></a> is called.
<p>
@@ -866,7 +848,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.627">onStartServer</a>()</pre>
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.603">onStartServer</a>()</pre>
<div class="block">Called before <a href="../../../../org/apache/juneau/microservice/RestMicroservice.html#startServer--"><code>startServer()</code></a> is called.
<p>
@@ -879,7 +861,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.635">onPostStartServer</a>()</pre>
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.611">onPostStartServer</a>()</pre>
<div class="block">Called after the Jetty server is started.
<p>
@@ -892,7 +874,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.643">onStopServer</a>()</pre>
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.619">onStopServer</a>()</pre>
<div class="block">Called before the Jetty server is stopped.
<p>
@@ -905,7 +887,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.651">onPostStopServer</a>()</pre>
+<pre>protected void <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.627">onPostStopServer</a>()</pre>
<div class="block">Called after the Jetty server is stopped.
<p>
@@ -918,7 +900,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.659">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.635">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>
@@ -954,7 +936,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.665">setConfig</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/microservice/RestMicroservice.html" title="class in org.apache.juneau.microservice">RestMicroservice</a> <a href="../../../../src-html/org/apache/juneau/microservice/RestMicroservice.html#line.641">setConfig</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/microservice/Microservice.html#setConfig-org.apache.juneau.ini.ConfigFile-">Microservice</a></code></span></div>
<div class="block">Specifies the config file for this microservice.
@@ -977,7 +959,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
<ul class="blockList">
<li class="blockList">
<h4>setManifest</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.671">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 <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.647">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"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.util.jar.Manifest-">Microservice</a></code></span></div>
<div class="block">Specifies the manifest file of the jar file this microservice is contained within.
@@ -1005,7 +987,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
<ul class="blockList">
<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.677">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.653">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>
@@ -1027,7 +1009,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
<ul class="blockList">
<li class="blockList">
<h4>setManifest</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.683">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)
+<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.659">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"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.io.File-">Microservice</a></code></span></div>
<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>
@@ -1049,7 +1031,7 @@ extends <a href="../../../../org/apache/juneau/microservice/Microservice.html" t
<ul class="blockListLast">
<li class="blockList">
<h4>setManifest</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.689">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)
+<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.665">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"><span class="descfrmTypeLabel">Description copied from class: <code><a href="../../../../org/apache/juneau/microservice/Microservice.html#setManifest-java.lang.Class-">Microservice</a></code></span></div>
<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
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 523affe..9423f53 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/package-summary.html
@@ -784,8 +784,8 @@
}
</p>
<p>
- Additional user-defined variables can be defined at this level by overriding the
- <a href="../../../../org/apache/juneau/microservice/Resource.html#init-org.apache.juneau.rest.RestConfig-"><code>Resource.init(RestConfig)</code></a> method
+ Additional user-defined variables can be defined at this level by adding a
+ <a href="../../../../org/apache/juneau/rest/annotation/HookEvent.html#INIT"><code>HookEvent.INIT</code></a> hook method
and using the <a href="../../../../org/apache/juneau/rest/RestConfig.html#addVars-java.lang.Class...-"><code>RestConfig.addVars(Class...)</code></a> method.
</p>
<li class='jm'>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 c756229..57ae672 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/package-tree.html
@@ -82,7 +82,7 @@
<ul>
<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> (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>)
+<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>
<ul>
<li type="circle">org.apache.juneau.rest.<a href="../../../../org/apache/juneau/rest/RestServlet.html" title="class in org.apache.juneau.rest"><span class="typeNameLink">RestServlet</span></a>
<ul>
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 78678b4..452745c 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/ConfigResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/ConfigResource.html
@@ -241,7 +241,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
<!-- -->
</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#init-org.apache.juneau.rest.RestConfig-">init</a></code></li>
+<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">
@@ -255,7 +255,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
<!-- -->
</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#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 cc9dd22..44117e8 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/resources/DirectoryResource.html
@@ -278,7 +278,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
<!-- -->
</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#init-org.apache.juneau.rest.RestConfig-">init</a></code></li>
+<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">
@@ -292,7 +292,7 @@ extends <a href="../../../../../org/apache/juneau/microservice/Resource.html" ti
<!-- -->
</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#onPostCall-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-">onPostCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onPreCall-org.apache.juneau.rest.RestRequest-">onPreCall</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#onSuccess-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-long-">onSuccess</a>, <a href="../../../../../org/apache/juneau/rest/RestServlet.html#service-javax.servlet.http.HttpServletRequest-javax.servlet.http.HttpServletResponse-">service</a></code></li>
+<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">
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/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 a4756b7..04f7e46 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.300">LogsResource.FileResource</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/juneau/microservice/resources/LogsResource.html#line.306">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.302">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.308">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.303">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.309">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.304">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.310">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/BeanProperty.html" title="annotation in org.apache.juneau.annotation">@BeanProperty</a>(<a href="../../../../../org/apache/juneau/annotation/BeanProperty.html#swap--">swap</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.305">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.311">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.306">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.312">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.306">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.312">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.306">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.312">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.306">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.312">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.306">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.312">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.308">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.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,
<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>
[12/25] incubator-juneau-website git commit: Add @RestHook support.
Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/84931d4d/content/site/apidocs/src-html/org/apache/juneau/internal/StringUtils.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/internal/StringUtils.html b/content/site/apidocs/src-html/org/apache/juneau/internal/StringUtils.html
index e37c845..a7608b4 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/internal/StringUtils.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/internal/StringUtils.html
@@ -1018,628 +1018,631 @@
<span class="sourceLineNo">1010</span> */<a name="line.1010"></a>
<span class="sourceLineNo">1011</span> public static String replaceVars(String s, Map<String,Object> m) {<a name="line.1011"></a>
<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span> if (s.indexOf('{') == -1)<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span> return s;<a name="line.1014"></a>
+<span class="sourceLineNo">1013</span> if (s == null)<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span> return null;<a name="line.1014"></a>
<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span> int S1 = 1; // Not in variable, looking for {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span> int S2 = 2; // Found {, Looking for }<a name="line.1017"></a>
+<span class="sourceLineNo">1016</span> if (s.indexOf('{') == -1)<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span> return s;<a name="line.1017"></a>
<span class="sourceLineNo">1018</span><a name="line.1018"></a>
-<span class="sourceLineNo">1019</span> int state = S1;<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span> boolean hasInternalVar = false;<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span> int x = 0;<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span> int depth = 0;<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span> int length = s.length();<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span> StringBuilder out = new StringBuilder();<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span> for (int i = 0; i < length; i++) {<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span> char c = s.charAt(i);<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span> if (state == S1) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span> if (c == '{') {<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span> state = S2;<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span> x = i;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span> } else {<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span> out.append(c);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span> }<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span> } else /* state == S2 */ {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span> if (c == '{') {<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span> depth++;<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span> hasInternalVar = true;<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span> } else if (c == '}') {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span> if (depth > 0) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span> depth--;<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span> } else {<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span> String key = s.substring(x+1, i);<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span> key = (hasInternalVar ? replaceVars(key, m) : key);<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span> hasInternalVar = false;<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span> if (! m.containsKey(key))<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span> out.append('{').append(key).append('}');<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span> else {<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span> Object val = m.get(key);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span> if (val == null)<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span> val = "";<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span> String v = val.toString();<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span> // If the replacement also contains variables, replace them now.<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span> if (v.indexOf('{') != -1)<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span> v = replaceVars(v, m);<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span> out.append(v);<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span> }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span> state = 1;<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span> }<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span> }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span> }<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span> }<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span> return out.toString();<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span> }<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span><a name="line.1064"></a>
-<span class="sourceLineNo">1065</span> /**<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span> * Returns <jk>true</jk> if the specified path string is prefixed with the specified prefix.<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span> *<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span> * <h5 class='section'>Example:</h5><a name="line.1068"></a>
-<span class="sourceLineNo">1069</span> * <p class='bcode'><a name="line.1069"></a>
-<span class="sourceLineNo">1070</span> * pathStartsWith(<js>"foo"</js>, <js>"foo"</js>); <jc>// true</jc><a name="line.1070"></a>
-<span class="sourceLineNo">1071</span> * pathStartsWith(<js>"foo/bar"</js>, <js>"foo"</js>); <jc>// true</jc><a name="line.1071"></a>
-<span class="sourceLineNo">1072</span> * pathStartsWith(<js>"foo2"</js>, <js>"foo"</js>); <jc>// false</jc><a name="line.1072"></a>
-<span class="sourceLineNo">1073</span> * pathStartsWith(<js>"foo2"</js>, <js>""</js>); <jc>// false</jc><a name="line.1073"></a>
-<span class="sourceLineNo">1074</span> * </p><a name="line.1074"></a>
-<span class="sourceLineNo">1075</span> *<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span> * @param path The path to check.<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span> * @param pathPrefix The prefix.<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span> * @return <jk>true</jk> if the specified path string is prefixed with the specified prefix.<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span> */<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span> public static boolean pathStartsWith(String path, String pathPrefix) {<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span> if (path == null || pathPrefix == null)<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span> return false;<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span> if (path.startsWith(pathPrefix))<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span> return path.length() == pathPrefix.length() || path.charAt(pathPrefix.length()) == '/';<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span> return false;<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span> }<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span><a name="line.1087"></a>
-<span class="sourceLineNo">1088</span> /**<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span> * Same as {@link #pathStartsWith(String, String)} but returns <jk>true</jk> if at least one prefix matches.<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span> *<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span> * @param path The path to check.<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span> * @param pathPrefixes The prefixes.<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span> * @return <jk>true</jk> if the specified path string is prefixed with any of the specified prefixes.<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span> */<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span> public static boolean pathStartsWith(String path, String[] pathPrefixes) {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span> for (String p : pathPrefixes)<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span> if (pathStartsWith(path, p))<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span> return true;<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span> return false;<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span> }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span><a name="line.1101"></a>
-<span class="sourceLineNo">1102</span> /**<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span> * Replaces <js>"\\uXXXX"</js> character sequences with their unicode characters.<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span> *<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span> * @param s The string to replace unicode sequences in.<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span> * @return A string with unicode sequences replaced.<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span> */<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span> public static String replaceUnicodeSequences(String s) {<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span> if (s.indexOf('\\') == -1)<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span> return s;<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span> Pattern p = Pattern.compile("\\\\u(\\p{XDigit}{4})");<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span> Matcher m = p.matcher(s);<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span> StringBuffer sb = new StringBuffer(s.length());<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span> while (m.find()) {<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span> String ch = String.valueOf((char) Integer.parseInt(m.group(1), 16));<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span> m.appendReplacement(sb, Matcher.quoteReplacement(ch));<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span> }<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span> m.appendTail(sb);<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span> return sb.toString();<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span> }<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span><a name="line.1121"></a>
-<span class="sourceLineNo">1122</span> /**<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span> * Returns the specified field in a delimited string without splitting the string.<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span> *<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span> * <p><a name="line.1125"></a>
-<span class="sourceLineNo">1126</span> * Equivalent to the following:<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span> * <p class='bcode'><a name="line.1127"></a>
-<span class="sourceLineNo">1128</span> * String in = <js>"0,1,2"</js>;<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span> * String[] parts = in.split(<js>","</js>);<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span> * String p1 = (parts.<jk>length</jk> > 1 ? parts[1] : <js>""</js>);<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span> * </p><a name="line.1131"></a>
-<span class="sourceLineNo">1132</span> *<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span> * @param fieldNum The field number. Zero-indexed.<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span> * @param s The input string.<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span> * @param delim The delimiter character.<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span> * @return The field entry in the string, or a blank string if it doesn't exist or the string is null.<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span> */<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span> public static String getField(int fieldNum, String s, char delim) {<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span> return getField(fieldNum, s, delim, "");<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span> }<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span><a name="line.1141"></a>
-<span class="sourceLineNo">1142</span> /**<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span> * Same as {@link #getField(int, String, char)} except allows you to specify the default value.<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span> *<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span> * @param fieldNum The field number. Zero-indexed.<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span> * @param s The input string.<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span> * @param delim The delimiter character.<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span> * @param def The default value if the field does not exist.<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span> * @return The field entry in the string, or the default value if it doesn't exist or the string is null.<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span> */<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span> public static String getField(int fieldNum, String s, char delim, String def) {<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span> if (s == null || fieldNum < 0)<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span> return def;<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span> int start = 0;<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span> for (int i = 0; i < s.length(); i++) {<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span> char c = s.charAt(i);<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span> if (c == delim) {<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span> fieldNum--;<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span> if (fieldNum == 0)<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span> start = i+1;<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span> }<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span> if (fieldNum < 0)<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span> return s.substring(start, i);<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span> }<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span> if (start == 0)<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span> return def;<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span> return s.substring(start);<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span> }<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span><a name="line.1169"></a>
-<span class="sourceLineNo">1170</span> /**<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span> * Calls {@link #toString()} on the specified object if it's not null.<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span> *<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span> * @param o The object to convert to a string.<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span> * @return The object converted to a string, or <jk>null</jk> if the object was null.<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span> */<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span> public static String toString(Object o) {<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span> return (o == null ? null : o.toString());<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span> }<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span><a name="line.1179"></a>
-<span class="sourceLineNo">1180</span> /**<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span> * Converts a hexadecimal byte stream (e.g. "34A5BC") into a UTF-8 encoded string.<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span> *<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span> * @param hex The hexadecimal string.<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span> * @return The UTF-8 string.<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span> */<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span> public static String fromHexToUTF8(String hex) {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span> ByteBuffer buff = ByteBuffer.allocate(hex.length()/2);<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span> for (int i = 0; i < hex.length(); i+=2)<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span> buff.put((byte)Integer.parseInt(hex.substring(i, i+2), 16));<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span> buff.rewind();<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span> Charset cs = Charset.forName("UTF-8");<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span> return cs.decode(buff).toString();<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span> }<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span><a name="line.1194"></a>
-<span class="sourceLineNo">1195</span> private final static char[] HEX = "0123456789ABCDEF".toCharArray();<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span><a name="line.1196"></a>
-<span class="sourceLineNo">1197</span> /**<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span> * Converts a byte array into a simple hexadecimal character string.<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span> *<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span> * @param bytes The bytes to convert to hexadecimal.<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span> * @return A new string consisting of hexadecimal characters.<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span> */<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span> public static String toHex(byte[] bytes) {<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span> StringBuilder sb = new StringBuilder(bytes.length * 2);<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span> for ( int j = 0; j < bytes.length; j++ ) {<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span> int v = bytes[j] & 0xFF;<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span> sb.append(HEX[v >>> 4]).append(HEX[v & 0x0F]);<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span> }<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span> return sb.toString();<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span> }<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span><a name="line.1211"></a>
-<span class="sourceLineNo">1212</span> /**<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span> * Converts a hexadecimal character string to a byte array.<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span> *<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span> * @param hex The string to convert to a byte array.<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span> * @return A new byte array.<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span> */<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span> public static byte[] fromHex(String hex) {<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span> ByteBuffer buff = ByteBuffer.allocate(hex.length()/2);<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span> for (int i = 0; i < hex.length(); i+=2)<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span> buff.put((byte)Integer.parseInt(hex.substring(i, i+2), 16));<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span> buff.rewind();<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span> return buff.array();<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span> }<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span><a name="line.1225"></a>
-<span class="sourceLineNo">1226</span> /**<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span> * Creates a repeated pattern.<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span> *<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span> * @param count The number of times to repeat the pattern.<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span> * @param pattern The pattern to repeat.<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span> * @return A new string consisting of the repeated pattern.<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span> */<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span> public static String repeat(int count, String pattern) {<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span> StringBuilder sb = new StringBuilder(pattern.length() * count);<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span> for (int i = 0; i < count; i++)<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span> sb.append(pattern);<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span> return sb.toString();<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span> }<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span><a name="line.1239"></a>
-<span class="sourceLineNo">1240</span> /**<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span> * Trims whitespace characters from the beginning of the specified string.<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span> *<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span> * @param s The string to trim.<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span> * @return The trimmed string, or <jk>null</jk> if the string was <jk>null</jk>.<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span> */<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span> public static String trimStart(String s) {<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span> if (s != null)<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span> while (s.length() > 0 && Character.isWhitespace(s.charAt(0)))<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span> s = s.substring(1);<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span> return s;<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span> }<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span><a name="line.1252"></a>
-<span class="sourceLineNo">1253</span> /**<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span> * Trims whitespace characters from the end of the specified string.<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span> *<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span> * @param s The string to trim.<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span> * @return The trimmed string, or <jk>null</jk> if the string was <jk>null</jk>.<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span> */<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span> public static String trimEnd(String s) {<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span> if (s != null)<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span> while (s.length() > 0 && Character.isWhitespace(s.charAt(s.length()-1)))<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span> s = s.substring(0, s.length()-1);<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span> return s;<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span> }<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span><a name="line.1265"></a>
-<span class="sourceLineNo">1266</span> /**<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span> * Returns <jk>true</jk> if the specified string is one of the specified values.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span> *<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span> * @param s<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span> * The string to test.<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span> * Can be <jk>null</jk>.<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span> * @param values<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span> * The values to test.<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span> * Can contain <jk>null</jk>.<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span> * @return <jk>true</jk> if the specified string is one of the specified values.<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span> */<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span> public static boolean isOneOf(String s, String...values) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span> for (int i = 0; i < values.length; i++)<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span> if (StringUtils.isEquals(s, values[i]))<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span> return true;<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span> return false;<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span> }<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span><a name="line.1283"></a>
-<span class="sourceLineNo">1284</span> /**<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span> * Trims <js>'/'</js> characters from both the start and end of the specified string.<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span> *<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span> * @param s The string to trim.<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span> * @return A new trimmed string, or the same string if no trimming was necessary.<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span> */<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span> public static String trimSlashes(String s) {<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span> if (s == null)<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span> return null;<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span> while (endsWith(s, '/'))<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span> s = s.substring(0, s.length()-1);<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span> while (s.length() > 0 && s.charAt(0) == '/')<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span> s = s.substring(1);<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span> return s;<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span> }<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span><a name="line.1299"></a>
-<span class="sourceLineNo">1300</span> /**<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span> * Trims <js>'/'</js> characters from the end of the specified string.<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span> *<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span> * @param s The string to trim.<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span> * @return A new trimmed string, or the same string if no trimming was necessary.<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span> */<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span> public static String trimTrailingSlashes(String s) {<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span> if (s == null)<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span> return null;<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span> while (endsWith(s, '/'))<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span> s = s.substring(0, s.length()-1);<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span> return s;<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span> }<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span><a name="line.1313"></a>
-<span class="sourceLineNo">1314</span> /**<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span> * Trims <js>'/'</js> characters from the end of the specified string.<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span> *<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span> * @param s The string to trim.<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span> * @return The same string buffer.<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span> */<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span> public static StringBuffer trimTrailingSlashes(StringBuffer s) {<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span> if (s == null)<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span> return null;<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span> while (s.length() > 0 && s.charAt(s.length()-1) == '/')<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span> s.setLength(s.length()-1);<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span> return s;<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span> }<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span><a name="line.1327"></a>
-<span class="sourceLineNo">1328</span> /**<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span> * Decodes a <code>application/x-www-form-urlencoded</code> string using <code>UTF-8</code> encoding scheme.<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span> *<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span> * @param s The string to decode.<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span> * @return The decoded string, or <jk>null</jk> if input is <jk>null</jk>.<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span> */<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span> public static String urlDecode(String s) {<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span> if (s == null)<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span> return s;<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span> boolean needsDecode = false;<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span> for (int i = 0; i < s.length() && ! needsDecode; i++) {<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span> char c = s.charAt(i);<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span> if (c == '+' || c == '%')<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span> needsDecode = true;<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span> }<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span> if (needsDecode)<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span> try {<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span> return URLDecoder.decode(s, "UTF-8");<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span> } catch (UnsupportedEncodingException e) {/* Won't happen */}<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span> return s;<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span> }<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span><a name="line.1349"></a>
-<span class="sourceLineNo">1350</span> /**<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span> * Encodes a <code>application/x-www-form-urlencoded</code> string using <code>UTF-8</code> encoding scheme.<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span> *<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span> * @param s The string to encode.<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span> * @return The encoded string, or <jk>null</jk> if input is <jk>null</jk>.<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span> */<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span> public static String urlEncode(String s) {<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span> if (s == null)<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span> return null;<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span> boolean needsEncode = false;<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span> for (int i = 0; i < s.length() && ! needsEncode; i++)<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span> needsEncode |= (! unencodedChars.contains(s.charAt(i)));<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span> if (needsEncode) {<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span> try {<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span> return URLEncoder.encode(s, "UTF-8");<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span> } catch (UnsupportedEncodingException e) {/* Won't happen */}<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span> }<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span> return s;<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span> }<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span><a name="line.1369"></a>
-<span class="sourceLineNo">1370</span> /**<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span> * Returns the first non-whitespace character in the string.<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span> *<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span> * @param s The string to check.<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span> * @return<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span> * The first non-whitespace character, or <code>0</code> if the string is <jk>null</jk>, empty, or composed<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span> * of only whitespace.<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span> */<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span> public static char firstNonWhitespaceChar(String s) {<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span> if (s != null)<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span> for (int i = 0; i < s.length(); i++)<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span> if (! Character.isWhitespace(s.charAt(i)))<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span> return s.charAt(i);<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span> return 0;<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span> }<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span><a name="line.1385"></a>
-<span class="sourceLineNo">1386</span> /**<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span> * Returns the character at the specified index in the string without throwing exceptions.<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span> *<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span> * @param s The string.<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span> * @param i The index position.<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span> * @return<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span> * The character at the specified index, or <code>0</code> if the index is out-of-range or the string<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span> * is <jk>null</jk>.<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span> */<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span> public static char charAt(String s, int i) {<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span> if (s == null)<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span> return 0;<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span> if (i < 0 || i >= s.length())<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span> return 0;<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span> return s.charAt(i);<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span> }<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span><a name="line.1402"></a>
-<span class="sourceLineNo">1403</span> /**<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span> * Efficiently determines whether a URL is of the pattern "xxx://xxx"<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span> *<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span> * @param s The string to test.<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span> * @return <jk>true</jk> if it's an absolute path.<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span> */<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span> public static boolean isAbsoluteUri(String s) {<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span><a name="line.1410"></a>
-<span class="sourceLineNo">1411</span> if (isEmpty(s))<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span> return false;<a name="line.1412"></a>
+<span class="sourceLineNo">1019</span> int S1 = 1; // Not in variable, looking for {<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span> int S2 = 2; // Found {, Looking for }<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span><a name="line.1021"></a>
+<span class="sourceLineNo">1022</span> int state = S1;<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span> boolean hasInternalVar = false;<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span> int x = 0;<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span> int depth = 0;<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span> int length = s.length();<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span> StringBuilder out = new StringBuilder();<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span> for (int i = 0; i < length; i++) {<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span> char c = s.charAt(i);<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span> if (state == S1) {<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span> if (c == '{') {<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span> state = S2;<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span> x = i;<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span> } else {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span> out.append(c);<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span> }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span> } else /* state == S2 */ {<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span> if (c == '{') {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span> depth++;<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span> hasInternalVar = true;<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span> } else if (c == '}') {<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span> if (depth > 0) {<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span> depth--;<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span> } else {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span> String key = s.substring(x+1, i);<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span> key = (hasInternalVar ? replaceVars(key, m) : key);<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span> hasInternalVar = false;<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span> if (! m.containsKey(key))<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span> out.append('{').append(key).append('}');<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span> else {<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span> Object val = m.get(key);<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span> if (val == null)<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span> val = "";<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span> String v = val.toString();<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span> // If the replacement also contains variables, replace them now.<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span> if (v.indexOf('{') != -1)<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span> v = replaceVars(v, m);<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span> out.append(v);<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span> }<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span> state = 1;<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span> }<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span> }<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span> }<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span> }<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span> return out.toString();<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span> }<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span><a name="line.1067"></a>
+<span class="sourceLineNo">1068</span> /**<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span> * Returns <jk>true</jk> if the specified path string is prefixed with the specified prefix.<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span> *<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span> * <h5 class='section'>Example:</h5><a name="line.1071"></a>
+<span class="sourceLineNo">1072</span> * <p class='bcode'><a name="line.1072"></a>
+<span class="sourceLineNo">1073</span> * pathStartsWith(<js>"foo"</js>, <js>"foo"</js>); <jc>// true</jc><a name="line.1073"></a>
+<span class="sourceLineNo">1074</span> * pathStartsWith(<js>"foo/bar"</js>, <js>"foo"</js>); <jc>// true</jc><a name="line.1074"></a>
+<span class="sourceLineNo">1075</span> * pathStartsWith(<js>"foo2"</js>, <js>"foo"</js>); <jc>// false</jc><a name="line.1075"></a>
+<span class="sourceLineNo">1076</span> * pathStartsWith(<js>"foo2"</js>, <js>""</js>); <jc>// false</jc><a name="line.1076"></a>
+<span class="sourceLineNo">1077</span> * </p><a name="line.1077"></a>
+<span class="sourceLineNo">1078</span> *<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span> * @param path The path to check.<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span> * @param pathPrefix The prefix.<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span> * @return <jk>true</jk> if the specified path string is prefixed with the specified prefix.<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span> */<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span> public static boolean pathStartsWith(String path, String pathPrefix) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span> if (path == null || pathPrefix == null)<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span> return false;<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span> if (path.startsWith(pathPrefix))<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span> return path.length() == pathPrefix.length() || path.charAt(pathPrefix.length()) == '/';<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span> return false;<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span> }<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span><a name="line.1090"></a>
+<span class="sourceLineNo">1091</span> /**<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span> * Same as {@link #pathStartsWith(String, String)} but returns <jk>true</jk> if at least one prefix matches.<a name="line.1092"></a>
+<span class="sourceLineNo">1093</span> *<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span> * @param path The path to check.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span> * @param pathPrefixes The prefixes.<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span> * @return <jk>true</jk> if the specified path string is prefixed with any of the specified prefixes.<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span> */<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span> public static boolean pathStartsWith(String path, String[] pathPrefixes) {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span> for (String p : pathPrefixes)<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span> if (pathStartsWith(path, p))<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span> return true;<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span> return false;<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span> }<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span><a name="line.1104"></a>
+<span class="sourceLineNo">1105</span> /**<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span> * Replaces <js>"\\uXXXX"</js> character sequences with their unicode characters.<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span> *<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span> * @param s The string to replace unicode sequences in.<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span> * @return A string with unicode sequences replaced.<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span> */<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span> public static String replaceUnicodeSequences(String s) {<a name="line.1111"></a>
+<span class="sourceLineNo">1112</span> if (s.indexOf('\\') == -1)<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span> return s;<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span> Pattern p = Pattern.compile("\\\\u(\\p{XDigit}{4})");<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span> Matcher m = p.matcher(s);<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span> StringBuffer sb = new StringBuffer(s.length());<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span> while (m.find()) {<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span> String ch = String.valueOf((char) Integer.parseInt(m.group(1), 16));<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span> m.appendReplacement(sb, Matcher.quoteReplacement(ch));<a name="line.1119"></a>
+<span class="sourceLineNo">1120</span> }<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span> m.appendTail(sb);<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span> return sb.toString();<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span> }<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span><a name="line.1124"></a>
+<span class="sourceLineNo">1125</span> /**<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span> * Returns the specified field in a delimited string without splitting the string.<a name="line.1126"></a>
+<span class="sourceLineNo">1127</span> *<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span> * <p><a name="line.1128"></a>
+<span class="sourceLineNo">1129</span> * Equivalent to the following:<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span> * <p class='bcode'><a name="line.1130"></a>
+<span class="sourceLineNo">1131</span> * String in = <js>"0,1,2"</js>;<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span> * String[] parts = in.split(<js>","</js>);<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span> * String p1 = (parts.<jk>length</jk> > 1 ? parts[1] : <js>""</js>);<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span> * </p><a name="line.1134"></a>
+<span class="sourceLineNo">1135</span> *<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span> * @param fieldNum The field number. Zero-indexed.<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span> * @param s The input string.<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span> * @param delim The delimiter character.<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span> * @return The field entry in the string, or a blank string if it doesn't exist or the string is null.<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span> */<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span> public static String getField(int fieldNum, String s, char delim) {<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span> return getField(fieldNum, s, delim, "");<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span> }<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span><a name="line.1144"></a>
+<span class="sourceLineNo">1145</span> /**<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span> * Same as {@link #getField(int, String, char)} except allows you to specify the default value.<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span> *<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span> * @param fieldNum The field number. Zero-indexed.<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span> * @param s The input string.<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span> * @param delim The delimiter character.<a name="line.1150"></a>
+<span class="sourceLineNo">1151</span> * @param def The default value if the field does not exist.<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span> * @return The field entry in the string, or the default value if it doesn't exist or the string is null.<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span> */<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span> public static String getField(int fieldNum, String s, char delim, String def) {<a name="line.1154"></a>
+<span class="sourceLineNo">1155</span> if (s == null || fieldNum < 0)<a name="line.1155"></a>
+<span class="sourceLineNo">1156</span> return def;<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span> int start = 0;<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span> for (int i = 0; i < s.length(); i++) {<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span> char c = s.charAt(i);<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span> if (c == delim) {<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span> fieldNum--;<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span> if (fieldNum == 0)<a name="line.1162"></a>
+<span class="sourceLineNo">1163</span> start = i+1;<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span> }<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span> if (fieldNum < 0)<a name="line.1165"></a>
+<span class="sourceLineNo">1166</span> return s.substring(start, i);<a name="line.1166"></a>
+<span class="sourceLineNo">1167</span> }<a name="line.1167"></a>
+<span class="sourceLineNo">1168</span> if (start == 0)<a name="line.1168"></a>
+<span class="sourceLineNo">1169</span> return def;<a name="line.1169"></a>
+<span class="sourceLineNo">1170</span> return s.substring(start);<a name="line.1170"></a>
+<span class="sourceLineNo">1171</span> }<a name="line.1171"></a>
+<span class="sourceLineNo">1172</span><a name="line.1172"></a>
+<span class="sourceLineNo">1173</span> /**<a name="line.1173"></a>
+<span class="sourceLineNo">1174</span> * Calls {@link #toString()} on the specified object if it's not null.<a name="line.1174"></a>
+<span class="sourceLineNo">1175</span> *<a name="line.1175"></a>
+<span class="sourceLineNo">1176</span> * @param o The object to convert to a string.<a name="line.1176"></a>
+<span class="sourceLineNo">1177</span> * @return The object converted to a string, or <jk>null</jk> if the object was null.<a name="line.1177"></a>
+<span class="sourceLineNo">1178</span> */<a name="line.1178"></a>
+<span class="sourceLineNo">1179</span> public static String toString(Object o) {<a name="line.1179"></a>
+<span class="sourceLineNo">1180</span> return (o == null ? null : o.toString());<a name="line.1180"></a>
+<span class="sourceLineNo">1181</span> }<a name="line.1181"></a>
+<span class="sourceLineNo">1182</span><a name="line.1182"></a>
+<span class="sourceLineNo">1183</span> /**<a name="line.1183"></a>
+<span class="sourceLineNo">1184</span> * Converts a hexadecimal byte stream (e.g. "34A5BC") into a UTF-8 encoded string.<a name="line.1184"></a>
+<span class="sourceLineNo">1185</span> *<a name="line.1185"></a>
+<span class="sourceLineNo">1186</span> * @param hex The hexadecimal string.<a name="line.1186"></a>
+<span class="sourceLineNo">1187</span> * @return The UTF-8 string.<a name="line.1187"></a>
+<span class="sourceLineNo">1188</span> */<a name="line.1188"></a>
+<span class="sourceLineNo">1189</span> public static String fromHexToUTF8(String hex) {<a name="line.1189"></a>
+<span class="sourceLineNo">1190</span> ByteBuffer buff = ByteBuffer.allocate(hex.length()/2);<a name="line.1190"></a>
+<span class="sourceLineNo">1191</span> for (int i = 0; i < hex.length(); i+=2)<a name="line.1191"></a>
+<span class="sourceLineNo">1192</span> buff.put((byte)Integer.parseInt(hex.substring(i, i+2), 16));<a name="line.1192"></a>
+<span class="sourceLineNo">1193</span> buff.rewind();<a name="line.1193"></a>
+<span class="sourceLineNo">1194</span> Charset cs = Charset.forName("UTF-8");<a name="line.1194"></a>
+<span class="sourceLineNo">1195</span> return cs.decode(buff).toString();<a name="line.1195"></a>
+<span class="sourceLineNo">1196</span> }<a name="line.1196"></a>
+<span class="sourceLineNo">1197</span><a name="line.1197"></a>
+<span class="sourceLineNo">1198</span> private final static char[] HEX = "0123456789ABCDEF".toCharArray();<a name="line.1198"></a>
+<span class="sourceLineNo">1199</span><a name="line.1199"></a>
+<span class="sourceLineNo">1200</span> /**<a name="line.1200"></a>
+<span class="sourceLineNo">1201</span> * Converts a byte array into a simple hexadecimal character string.<a name="line.1201"></a>
+<span class="sourceLineNo">1202</span> *<a name="line.1202"></a>
+<span class="sourceLineNo">1203</span> * @param bytes The bytes to convert to hexadecimal.<a name="line.1203"></a>
+<span class="sourceLineNo">1204</span> * @return A new string consisting of hexadecimal characters.<a name="line.1204"></a>
+<span class="sourceLineNo">1205</span> */<a name="line.1205"></a>
+<span class="sourceLineNo">1206</span> public static String toHex(byte[] bytes) {<a name="line.1206"></a>
+<span class="sourceLineNo">1207</span> StringBuilder sb = new StringBuilder(bytes.length * 2);<a name="line.1207"></a>
+<span class="sourceLineNo">1208</span> for ( int j = 0; j < bytes.length; j++ ) {<a name="line.1208"></a>
+<span class="sourceLineNo">1209</span> int v = bytes[j] & 0xFF;<a name="line.1209"></a>
+<span class="sourceLineNo">1210</span> sb.append(HEX[v >>> 4]).append(HEX[v & 0x0F]);<a name="line.1210"></a>
+<span class="sourceLineNo">1211</span> }<a name="line.1211"></a>
+<span class="sourceLineNo">1212</span> return sb.toString();<a name="line.1212"></a>
+<span class="sourceLineNo">1213</span> }<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span><a name="line.1214"></a>
+<span class="sourceLineNo">1215</span> /**<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span> * Converts a hexadecimal character string to a byte array.<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span> *<a name="line.1217"></a>
+<span class="sourceLineNo">1218</span> * @param hex The string to convert to a byte array.<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span> * @return A new byte array.<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span> */<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span> public static byte[] fromHex(String hex) {<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span> ByteBuffer buff = ByteBuffer.allocate(hex.length()/2);<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span> for (int i = 0; i < hex.length(); i+=2)<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span> buff.put((byte)Integer.parseInt(hex.substring(i, i+2), 16));<a name="line.1224"></a>
+<span class="sourceLineNo">1225</span> buff.rewind();<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span> return buff.array();<a name="line.1226"></a>
+<span class="sourceLineNo">1227</span> }<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span><a name="line.1228"></a>
+<span class="sourceLineNo">1229</span> /**<a name="line.1229"></a>
+<span class="sourceLineNo">1230</span> * Creates a repeated pattern.<a name="line.1230"></a>
+<span class="sourceLineNo">1231</span> *<a name="line.1231"></a>
+<span class="sourceLineNo">1232</span> * @param count The number of times to repeat the pattern.<a name="line.1232"></a>
+<span class="sourceLineNo">1233</span> * @param pattern The pattern to repeat.<a name="line.1233"></a>
+<span class="sourceLineNo">1234</span> * @return A new string consisting of the repeated pattern.<a name="line.1234"></a>
+<span class="sourceLineNo">1235</span> */<a name="line.1235"></a>
+<span class="sourceLineNo">1236</span> public static String repeat(int count, String pattern) {<a name="line.1236"></a>
+<span class="sourceLineNo">1237</span> StringBuilder sb = new StringBuilder(pattern.length() * count);<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span> for (int i = 0; i < count; i++)<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span> sb.append(pattern);<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span> return sb.toString();<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span> }<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span><a name="line.1242"></a>
+<span class="sourceLineNo">1243</span> /**<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span> * Trims whitespace characters from the beginning of the specified string.<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span> *<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span> * @param s The string to trim.<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span> * @return The trimmed string, or <jk>null</jk> if the string was <jk>null</jk>.<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span> */<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span> public static String trimStart(String s) {<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span> if (s != null)<a name="line.1250"></a>
+<span class="sourceLineNo">1251</span> while (s.length() > 0 && Character.isWhitespace(s.charAt(0)))<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span> s = s.substring(1);<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span> return s;<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span> }<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span><a name="line.1255"></a>
+<span class="sourceLineNo">1256</span> /**<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span> * Trims whitespace characters from the end of the specified string.<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span> *<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span> * @param s The string to trim.<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span> * @return The trimmed string, or <jk>null</jk> if the string was <jk>null</jk>.<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span> */<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span> public static String trimEnd(String s) {<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span> if (s != null)<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span> while (s.length() > 0 && Character.isWhitespace(s.charAt(s.length()-1)))<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span> s = s.substring(0, s.length()-1);<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span> return s;<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span> }<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span><a name="line.1268"></a>
+<span class="sourceLineNo">1269</span> /**<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span> * Returns <jk>true</jk> if the specified string is one of the specified values.<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span> *<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span> * @param s<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span> * The string to test.<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span> * Can be <jk>null</jk>.<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span> * @param values<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span> * The values to test.<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span> * Can contain <jk>null</jk>.<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span> * @return <jk>true</jk> if the specified string is one of the specified values.<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span> */<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span> public static boolean isOneOf(String s, String...values) {<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span> for (int i = 0; i < values.length; i++)<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span> if (StringUtils.isEquals(s, values[i]))<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span> return true;<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span> return false;<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span> }<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span><a name="line.1286"></a>
+<span class="sourceLineNo">1287</span> /**<a name="line.1287"></a>
+<span class="sourceLineNo">1288</span> * Trims <js>'/'</js> characters from both the start and end of the specified string.<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span> *<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span> * @param s The string to trim.<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span> * @return A new trimmed string, or the same string if no trimming was necessary.<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span> */<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span> public static String trimSlashes(String s) {<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span> if (s == null)<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span> return null;<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span> while (endsWith(s, '/'))<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span> s = s.substring(0, s.length()-1);<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span> while (s.length() > 0 && s.charAt(0) == '/')<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span> s = s.substring(1);<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span> return s;<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span> }<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span><a name="line.1302"></a>
+<span class="sourceLineNo">1303</span> /**<a name="line.1303"></a>
+<span class="sourceLineNo">1304</span> * Trims <js>'/'</js> characters from the end of the specified string.<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span> *<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span> * @param s The string to trim.<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span> * @return A new trimmed string, or the same string if no trimming was necessary.<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span> */<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span> public static String trimTrailingSlashes(String s) {<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span> if (s == null)<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span> return null;<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span> while (endsWith(s, '/'))<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span> s = s.substring(0, s.length()-1);<a name="line.1313"></a>
+<span class="sourceLineNo">1314</span> return s;<a name="line.1314"></a>
+<span class="sourceLineNo">1315</span> }<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span><a name="line.1316"></a>
+<span class="sourceLineNo">1317</span> /**<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span> * Trims <js>'/'</js> characters from the end of the specified string.<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span> *<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span> * @param s The string to trim.<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span> * @return The same string buffer.<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span> */<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span> public static StringBuffer trimTrailingSlashes(StringBuffer s) {<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span> if (s == null)<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span> return null;<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span> while (s.length() > 0 && s.charAt(s.length()-1) == '/')<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span> s.setLength(s.length()-1);<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span> return s;<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span> }<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span><a name="line.1330"></a>
+<span class="sourceLineNo">1331</span> /**<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span> * Decodes a <code>application/x-www-form-urlencoded</code> string using <code>UTF-8</code> encoding scheme.<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span> *<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span> * @param s The string to decode.<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span> * @return The decoded string, or <jk>null</jk> if input is <jk>null</jk>.<a name="line.1335"></a>
+<span class="sourceLineNo">1336</span> */<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span> public static String urlDecode(String s) {<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span> if (s == null)<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span> return s;<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span> boolean needsDecode = false;<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span> for (int i = 0; i < s.length() && ! needsDecode; i++) {<a name="line.1341"></a>
+<span class="sourceLineNo">1342</span> char c = s.charAt(i);<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span> if (c == '+' || c == '%')<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span> needsDecode = true;<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span> }<a name="line.1345"></a>
+<span class="sourceLineNo">1346</span> if (needsDecode)<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span> try {<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span> return URLDecoder.decode(s, "UTF-8");<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span> } catch (UnsupportedEncodingException e) {/* Won't happen */}<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span> return s;<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span> }<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span><a name="line.1352"></a>
+<span class="sourceLineNo">1353</span> /**<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span> * Encodes a <code>application/x-www-form-urlencoded</code> string using <code>UTF-8</code> encoding scheme.<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span> *<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span> * @param s The string to encode.<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span> * @return The encoded string, or <jk>null</jk> if input is <jk>null</jk>.<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span> */<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span> public static String urlEncode(String s) {<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span> if (s == null)<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span> return null;<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span> boolean needsEncode = false;<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span> for (int i = 0; i < s.length() && ! needsEncode; i++)<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span> needsEncode |= (! unencodedChars.contains(s.charAt(i)));<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span> if (needsEncode) {<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span> try {<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span> return URLEncoder.encode(s, "UTF-8");<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span> } catch (UnsupportedEncodingException e) {/* Won't happen */}<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span> }<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span> return s;<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span> }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span><a name="line.1372"></a>
+<span class="sourceLineNo">1373</span> /**<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span> * Returns the first non-whitespace character in the string.<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span> *<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span> * @param s The string to check.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span> * @return<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span> * The first non-whitespace character, or <code>0</code> if the string is <jk>null</jk>, empty, or composed<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span> * of only whitespace.<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span> */<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span> public static char firstNonWhitespaceChar(String s) {<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span> if (s != null)<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span> for (int i = 0; i < s.length(); i++)<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span> if (! Character.isWhitespace(s.charAt(i)))<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span> return s.charAt(i);<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span> return 0;<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span> }<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span><a name="line.1388"></a>
+<span class="sourceLineNo">1389</span> /**<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span> * Returns the character at the specified index in the string without throwing exceptions.<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span> *<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span> * @param s The string.<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span> * @param i The index position.<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span> * @return<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span> * The character at the specified index, or <code>0</code> if the index is out-of-range or the string<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span> * is <jk>null</jk>.<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span> */<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span> public static char charAt(String s, int i) {<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span> if (s == null)<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span> return 0;<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span> if (i < 0 || i >= s.length())<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span> return 0;<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span> return s.charAt(i);<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span> }<a name="line.1404"></a>
+<span class="sourceLineNo">1405</span><a name="line.1405"></a>
+<span class="sourceLineNo">1406</span> /**<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span> * Efficiently determines whether a URL is of the pattern "xxx://xxx"<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span> *<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span> * @param s The string to test.<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span> * @return <jk>true</jk> if it's an absolute path.<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span> */<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span> public static boolean isAbsoluteUri(String s) {<a name="line.1412"></a>
<span class="sourceLineNo">1413</span><a name="line.1413"></a>
-<span class="sourceLineNo">1414</span> // Use a state machine for maximum performance.<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span><a name="line.1415"></a>
-<span class="sourceLineNo">1416</span> int S1 = 1; // Looking for http<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span> int S2 = 2; // Found http, looking for :<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span> int S3 = 3; // Found :, looking for /<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span> int S4 = 4; // Found /, looking for /<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span> int S5 = 5; // Found /, looking for x<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span><a name="line.1421"></a>
-<span class="sourceLineNo">1422</span> int state = S1;<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span> for (int i = 0; i < s.length(); i++) {<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span> char c = s.charAt(i);<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span> if (state == S1) {<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span> if (c >= 'a' && c <= 'z')<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span> state = S2;<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span> else<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span> return false;<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span> } else if (state == S2) {<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span> if (c == ':')<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span> state = S3;<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span> else if (c < 'a' || c > 'z')<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span> return false;<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span> } else if (state == S3) {<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span> if (c == '/')<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span> state = S4;<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span> else<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span> return false;<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span> } else if (state == S4) {<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span> if (c == '/')<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span> state = S5;<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span> else<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span> return false;<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span> } else if (state == S5) {<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span> return true;<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span> }<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span> }<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span> return false;<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span> }<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span><a name="line.1451"></a>
-<span class="sourceLineNo">1452</span> /**<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span> * Efficiently determines whether a URL is of the pattern "xxx:/xxx".<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span> *<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span> * <p><a name="line.1455"></a>
-<span class="sourceLineNo">1456</span> * The pattern matched is: <code>[a-z]{2,}\:\/.*</code><a name="line.1456"></a>
+<span class="sourceLineNo">1414</span> if (isEmpty(s))<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span> return false;<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span><a name="line.1416"></a>
+<span class="sourceLineNo">1417</span> // Use a state machine for maximum performance.<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span><a name="line.1418"></a>
+<span class="sourceLineNo">1419</span> int S1 = 1; // Looking for http<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span> int S2 = 2; // Found http, looking for :<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span> int S3 = 3; // Found :, looking for /<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span> int S4 = 4; // Found /, looking for /<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span> int S5 = 5; // Found /, looking for x<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span><a name="line.1424"></a>
+<span class="sourceLineNo">1425</span> int state = S1;<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span> for (int i = 0; i < s.length(); i++) {<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span> char c = s.charAt(i);<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span> if (state == S1) {<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span> if (c >= 'a' && c <= 'z')<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span> state = S2;<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span> else<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span> return false;<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span> } else if (state == S2) {<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span> if (c == ':')<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span> state = S3;<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span> else if (c < 'a' || c > 'z')<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span> return false;<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span> } else if (state == S3) {<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span> if (c == '/')<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span> state = S4;<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span> else<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span> return false;<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span> } else if (state == S4) {<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span> if (c == '/')<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span> state = S5;<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span> else<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span> return false;<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span> } else if (state == S5) {<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span> return true;<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span> }<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span> }<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span> return false;<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span> }<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span><a name="line.1454"></a>
+<span class="sourceLineNo">1455</span> /**<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span> * Efficiently determines whether a URL is of the pattern "xxx:/xxx".<a name="line.1456"></a>
<span class="sourceLineNo">1457</span> *<a name="line.1457"></a>
<span class="sourceLineNo">1458</span> * <p><a name="line.1458"></a>
-<span class="sourceLineNo">1459</span> * Note that this excludes filesystem paths such as <js>"C:/temp"</js>.<a name="line.1459"></a>
+<span class="sourceLineNo">1459</span> * The pattern matched is: <code>[a-z]{2,}\:\/.*</code><a name="line.1459"></a>
<span class="sourceLineNo">1460</span> *<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span> * @param s The string to test.<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span> * @return <jk>true</jk> if it's an absolute path.<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span> */<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span> public static boolean isUri(String s) {<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span><a name="line.1465"></a>
-<span class="sourceLineNo">1466</span> if (isEmpty(s))<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span> return false;<a name="line.1467"></a>
+<span class="sourceLineNo">1461</span> * <p><a name="line.1461"></a>
+<span class="sourceLineNo">1462</span> * Note that this excludes filesystem paths such as <js>"C:/temp"</js>.<a name="line.1462"></a>
+<span class="sourceLineNo">1463</span> *<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span> * @param s The string to test.<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span> * @return <jk>true</jk> if it's an absolute path.<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span> */<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span> public static boolean isUri(String s) {<a name="line.1467"></a>
<span class="sourceLineNo">1468</span><a name="line.1468"></a>
-<span class="sourceLineNo">1469</span> // Use a state machine for maximum performance.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span><a name="line.1470"></a>
-<span class="sourceLineNo">1471</span> int S1 = 1; // Looking for protocol char 1<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span> int S2 = 2; // Found protocol char 1, looking for protocol char 2<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span> int S3 = 3; // Found protocol char 2, looking for :<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span> int S4 = 4; // Found :, looking for /<a name="line.1474"></a>
-<sp
<TRUNCATED>