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/06/18 19:40:20 UTC

[01/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Repository: incubator-juneau-website
Updated Branches:
  refs/heads/asf-site 436334e6d -> 2871fb5d4


http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/utils/SearchArgs.Builder.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/utils/SearchArgs.Builder.html b/content/site/apidocs/src-html/org/apache/juneau/utils/SearchArgs.Builder.html
new file mode 100644
index 0000000..6bf8c7b
--- /dev/null
+++ b/content/site/apidocs/src-html/org/apache/juneau/utils/SearchArgs.Builder.html
@@ -0,0 +1,373 @@
+<!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.utils;<a name="line.13"></a>
+<span class="sourceLineNo">014</span><a name="line.14"></a>
+<span class="sourceLineNo">015</span>import static java.util.Collections.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span>import static org.apache.juneau.internal.StringUtils.*;<a name="line.16"></a>
+<span class="sourceLineNo">017</span><a name="line.17"></a>
+<span class="sourceLineNo">018</span>import java.util.*;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import org.apache.juneau.internal.*;<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> * Encapsulates arguments for basic search/view/sort/position/limit functionality.<a name="line.23"></a>
+<span class="sourceLineNo">024</span> */<a name="line.24"></a>
+<span class="sourceLineNo">025</span>public class SearchArgs {<a name="line.25"></a>
+<span class="sourceLineNo">026</span>   private final Map&lt;String,String&gt; search;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>   private final List&lt;String&gt; view;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>   private final Map&lt;String,Boolean&gt; sort;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>   private final int position, limit;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>   private final boolean ignoreCase;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>   private SearchArgs(Builder b) {<a name="line.32"></a>
+<span class="sourceLineNo">033</span>      this.search = unmodifiableMap(new LinkedHashMap&lt;String,String&gt;(b.search));<a name="line.33"></a>
+<span class="sourceLineNo">034</span>      this.view = unmodifiableList(new ArrayList&lt;String&gt;(b.view));<a name="line.34"></a>
+<span class="sourceLineNo">035</span>      this.sort = unmodifiableMap(new LinkedHashMap&lt;String,Boolean&gt;(b.sort));<a name="line.35"></a>
+<span class="sourceLineNo">036</span>      this.position = b.position;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>      this.limit = b.limit;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>      this.ignoreCase = b.ignoreCase;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   }<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>   /**<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    * Builder for {@link SearchArgs} class.<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    */<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   @SuppressWarnings("hiding")<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   public static class Builder {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>      Map&lt;String,String&gt; search = new LinkedHashMap&lt;String,String&gt;();<a name="line.46"></a>
+<span class="sourceLineNo">047</span>      List&lt;String&gt; view = new ArrayList&lt;String&gt;();<a name="line.47"></a>
+<span class="sourceLineNo">048</span>      Map&lt;String,Boolean&gt; sort = new LinkedHashMap&lt;String,Boolean&gt;();<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      int position, limit;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>      boolean ignoreCase;<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>       * Adds search terms to this builder.<a name="line.53"></a>
+<span class="sourceLineNo">054</span>       * &lt;p&gt;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>       * The search terms are a comma-delimited list of key/value pairs of column-names and search tokens.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>       * &lt;p&gt;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>       * For example:<a name="line.57"></a>
+<span class="sourceLineNo">058</span>       * &lt;p class='bcode'&gt;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>       *    builder.search(&lt;js&gt;"column1=foo*, column2=bar baz"&lt;/js&gt;);<a name="line.59"></a>
+<span class="sourceLineNo">060</span>       * &lt;/p&gt;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>       * &lt;p&gt;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>       * It's up to implementers to decide the syntax and meaning of the search terms.<a name="line.62"></a>
+<span class="sourceLineNo">063</span>       * &lt;p&gt;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>       * Whitespace is trimmed from column names and search tokens.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>       *<a name="line.65"></a>
+<span class="sourceLineNo">066</span>       * @param searchTerms The search terms string.<a name="line.66"></a>
+<span class="sourceLineNo">067</span>       *    Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.67"></a>
+<span class="sourceLineNo">068</span>       * @return This object (for method chaining).<a name="line.68"></a>
+<span class="sourceLineNo">069</span>       */<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      public Builder search(String searchTerms) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>         if (searchTerms != null) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>            for (String s : StringUtils.split(searchTerms, ',')) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>               int i = StringUtils.indexOf(s, '=', '&gt;', '&lt;');<a name="line.73"></a>
+<span class="sourceLineNo">074</span>               if (i == -1)<a name="line.74"></a>
+<span class="sourceLineNo">075</span>                  throw new RuntimeException("Invalid search terms: '"+searchTerms+"'");<a name="line.75"></a>
+<span class="sourceLineNo">076</span>               char c = s.charAt(i);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>               search(s.substring(0, i).trim(), s.substring(c == '=' ? i+1 : i).trim());<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>         return this;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      }<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>      /**<a name="line.83"></a>
+<span class="sourceLineNo">084</span>       * Adds a search term to this builder.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>       * &lt;p&gt;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>       * It's up to implementers to decide the syntax and meaning of the search term.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>       *<a name="line.87"></a>
+<span class="sourceLineNo">088</span>       * @param column The column being searched.<a name="line.88"></a>
+<span class="sourceLineNo">089</span>       * @param searchTerm The search term.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>       * @return This object (for method chaining).<a name="line.90"></a>
+<span class="sourceLineNo">091</span>       */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      public Builder search(String column, String searchTerm) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>         this.search.put(column, searchTerm);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>         return this;<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>       * Specifies the list of columns to view.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>       * &lt;p&gt;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>       * The columns argument is a simple comma-delimited list of column names.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>       * &lt;p&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>       * For example:<a name="line.102"></a>
+<span class="sourceLineNo">103</span>       * &lt;p class='bcode'&gt;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>       *    builder.view(&lt;js&gt;"column1, column2"&lt;/js&gt;);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>       * &lt;/p&gt;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>       * &lt;p&gt;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>       * Whitespace is trimmed from column names.<a name="line.107"></a>
+<span class="sourceLineNo">108</span>       * &lt;p&gt;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>       * Empty view columns imply view all columns.<a name="line.109"></a>
+<span class="sourceLineNo">110</span>       *<a name="line.110"></a>
+<span class="sourceLineNo">111</span>       * @param columns The columns being viewed.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>       *    Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.112"></a>
+<span class="sourceLineNo">113</span>       * @return This object (for method chaining).<a name="line.113"></a>
+<span class="sourceLineNo">114</span>       */<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      public Builder view(String columns) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>         if (columns != null)<a name="line.116"></a>
+<span class="sourceLineNo">117</span>            return view(Arrays.asList(StringUtils.split(columns, ',')));<a name="line.117"></a>
+<span class="sourceLineNo">118</span>         return this;<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>       * Specifies the list of columns to view.<a name="line.122"></a>
+<span class="sourceLineNo">123</span>       * &lt;p&gt;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>       * Empty view columns imply view all columns.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>       *<a name="line.125"></a>
+<span class="sourceLineNo">126</span>       * @param columns The columns being viewed.<a name="line.126"></a>
+<span class="sourceLineNo">127</span>       * @return This object (for method chaining).<a name="line.127"></a>
+<span class="sourceLineNo">128</span>       */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      public Builder view(Collection&lt;String&gt; columns) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>         this.view.addAll(columns);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>         return this;<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>       * Specifies the sort arguments.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>       * &lt;p&gt;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>       * The sort argument is a simple comma-delimited list of column names.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>       * &lt;br&gt;Column names can be suffixed with &lt;js&gt;'+'&lt;/js&gt; or &lt;js&gt;'-'&lt;/js&gt; to indicate ascending or descending order.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>       * &lt;br&gt;No suffix implies ascending order.<a name="line.139"></a>
+<span class="sourceLineNo">140</span>       * &lt;p&gt;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>       * For example:<a name="line.141"></a>
+<span class="sourceLineNo">142</span>       * &lt;p class='bcode'&gt;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>       *    &lt;jc&gt;// Order by column1 ascending, then column2 descending.&lt;/jc&gt;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>       *    builder.sort(&lt;js&gt;"column1, column2-"&lt;/js&gt;);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>       * &lt;/p&gt;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>       * &lt;p&gt;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>       * Note that the order of the order arguments is important.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>       * &lt;p&gt;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>       * Whitespace is trimmed from column names.<a name="line.149"></a>
+<span class="sourceLineNo">150</span>       *<a name="line.150"></a>
+<span class="sourceLineNo">151</span>       * @param sortArgs The columns to sort by.<a name="line.151"></a>
+<span class="sourceLineNo">152</span>       *    Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>       * @return This object (for method chaining).<a name="line.153"></a>
+<span class="sourceLineNo">154</span>       */<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      public Builder sort(String sortArgs) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>         if (sortArgs != null)<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            sort(Arrays.asList(StringUtils.split(sortArgs, ',')));<a name="line.157"></a>
+<span class="sourceLineNo">158</span>         return this;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>      /**<a name="line.161"></a>
+<span class="sourceLineNo">162</span>       * Specifies the sort arguments.<a name="line.162"></a>
+<span class="sourceLineNo">163</span>       * &lt;p&gt;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>       * &lt;br&gt;Column names can be suffixed with &lt;js&gt;'+'&lt;/js&gt; or &lt;js&gt;'-'&lt;/js&gt; to indicate ascending or descending order.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>       * &lt;br&gt;No suffix implies ascending order.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>       * &lt;p&gt;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>       * Note that the order of the sort is important.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>       *<a name="line.168"></a>
+<span class="sourceLineNo">169</span>       * @param sortArgs The columns to sort by.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>       *    Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>       * @return This object (for method chaining).<a name="line.171"></a>
+<span class="sourceLineNo">172</span>       */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      public Builder sort(Collection&lt;String&gt; sortArgs) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>         for (String s : sortArgs) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>            boolean isDesc = false;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>            if (endsWith(s, '-', '+')) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>               isDesc = endsWith(s, '-');<a name="line.177"></a>
+<span class="sourceLineNo">178</span>               s = s.substring(0, s.length()-1);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>            this.sort.put(s, isDesc);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>         }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>         return this;<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>       * Specifies the starting line number.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>       *<a name="line.187"></a>
+<span class="sourceLineNo">188</span>       * @param position The zero-indexed position.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>       * @return This object (for method chaining).<a name="line.189"></a>
+<span class="sourceLineNo">190</span>       */<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      public Builder position(int position) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>         this.position = position;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>         return this;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>      /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>       * Specifies the number of rows to return.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>       *<a name="line.198"></a>
+<span class="sourceLineNo">199</span>       * @param limit The number of rows to return.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>       *    If &lt;code&gt;&amp;lt;=0&lt;/code&gt;, all rows should be returned.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>       * @return This object (for method chaining).<a name="line.201"></a>
+<span class="sourceLineNo">202</span>       */<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      public Builder limit(int limit) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>         this.limit = limit;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>         return this;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>      /**<a name="line.208"></a>
+<span class="sourceLineNo">209</span>       * Specifies whether case-insensitive search should be used.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>       * &lt;p&gt;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>       * The default is &lt;jk&gt;false&lt;/jk&gt;.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>       *<a name="line.212"></a>
+<span class="sourceLineNo">213</span>       * @param value The ignore-case flag value.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>       * @return This object (for method chaining).<a name="line.214"></a>
+<span class="sourceLineNo">215</span>       */<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public Builder ignoreCase(boolean value) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>         this.ignoreCase = value;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>         return this;<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>       * Construct the {@link SearchArgs} object.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>       * &lt;p&gt;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>       * This method can be called multiple times to construct new objects.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>       *<a name="line.225"></a>
+<span class="sourceLineNo">226</span>       * @return A new {@link SearchArgs} object initialized with values in this builder.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>       */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      public SearchArgs build() {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>         return new SearchArgs(this);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      }<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>    * The query search terms.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    * &lt;p&gt;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    * The search terms are key/value pairs consisting of column-names and search tokens.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    * &lt;p&gt;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    * It's up to implementers to decide the syntax and meaning of the search term.<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    *<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    * @return An unmodifiable map of query search terms.<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   public Map&lt;String,String&gt; getSearch() {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      return search;<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>    * The view columns.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    * &lt;p&gt;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    * The view columns are the list of columns that should be displayed.<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    * An empty list implies all columns should be displayed.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    *<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    * @return An unmodifiable list of columns to view.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   public List&lt;String&gt; getView() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      return view;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>   /**<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    * The sort columns.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    * &lt;p&gt;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    * The sort columns are key/value pairs consisting of column-names and direction flags<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    *    (&lt;jk&gt;false&lt;/jk&gt; = ascending, &lt;jk&gt;true&lt;/jk&gt; = descending).<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    *<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    * @return An unmodifiable ordered map of sort columns and directions.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    */<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   public Map&lt;String,Boolean&gt; getSort() {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      return sort;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   }<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>    * The first-row position.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    *<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    * @return The zero-indexed row number of the first row to display.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    *    Default is &lt;code&gt;0&lt;/code&gt;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    */<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   public int getPosition() {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      return position;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>   /**<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    * The number of rows to return.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    *<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    * @return The number of rows to return in the result.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    *    Default is &lt;code&gt;0&lt;/code&gt; which means return all rows.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   public int getLimit() {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      return limit;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   }<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>   /**<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    * The ignore-case flag.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    * &lt;p&gt;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    * Used in conjunction with {@link #getSearch()} to specify whether case-insensitive searches should be performed.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    *<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    * @return The number of rows to return in the result.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    *    Default is &lt;jk&gt;false&lt;/jk&gt;.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    */<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   public boolean isIgnoreCase() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      return ignoreCase;<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/utils/SearchArgs.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/utils/SearchArgs.html b/content/site/apidocs/src-html/org/apache/juneau/utils/SearchArgs.html
new file mode 100644
index 0000000..6bf8c7b
--- /dev/null
+++ b/content/site/apidocs/src-html/org/apache/juneau/utils/SearchArgs.html
@@ -0,0 +1,373 @@
+<!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.utils;<a name="line.13"></a>
+<span class="sourceLineNo">014</span><a name="line.14"></a>
+<span class="sourceLineNo">015</span>import static java.util.Collections.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span>import static org.apache.juneau.internal.StringUtils.*;<a name="line.16"></a>
+<span class="sourceLineNo">017</span><a name="line.17"></a>
+<span class="sourceLineNo">018</span>import java.util.*;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import org.apache.juneau.internal.*;<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> * Encapsulates arguments for basic search/view/sort/position/limit functionality.<a name="line.23"></a>
+<span class="sourceLineNo">024</span> */<a name="line.24"></a>
+<span class="sourceLineNo">025</span>public class SearchArgs {<a name="line.25"></a>
+<span class="sourceLineNo">026</span>   private final Map&lt;String,String&gt; search;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>   private final List&lt;String&gt; view;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>   private final Map&lt;String,Boolean&gt; sort;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>   private final int position, limit;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>   private final boolean ignoreCase;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>   private SearchArgs(Builder b) {<a name="line.32"></a>
+<span class="sourceLineNo">033</span>      this.search = unmodifiableMap(new LinkedHashMap&lt;String,String&gt;(b.search));<a name="line.33"></a>
+<span class="sourceLineNo">034</span>      this.view = unmodifiableList(new ArrayList&lt;String&gt;(b.view));<a name="line.34"></a>
+<span class="sourceLineNo">035</span>      this.sort = unmodifiableMap(new LinkedHashMap&lt;String,Boolean&gt;(b.sort));<a name="line.35"></a>
+<span class="sourceLineNo">036</span>      this.position = b.position;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>      this.limit = b.limit;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>      this.ignoreCase = b.ignoreCase;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   }<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>   /**<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    * Builder for {@link SearchArgs} class.<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    */<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   @SuppressWarnings("hiding")<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   public static class Builder {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>      Map&lt;String,String&gt; search = new LinkedHashMap&lt;String,String&gt;();<a name="line.46"></a>
+<span class="sourceLineNo">047</span>      List&lt;String&gt; view = new ArrayList&lt;String&gt;();<a name="line.47"></a>
+<span class="sourceLineNo">048</span>      Map&lt;String,Boolean&gt; sort = new LinkedHashMap&lt;String,Boolean&gt;();<a name="line.48"></a>
+<span class="sourceLineNo">049</span>      int position, limit;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>      boolean ignoreCase;<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>       * Adds search terms to this builder.<a name="line.53"></a>
+<span class="sourceLineNo">054</span>       * &lt;p&gt;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>       * The search terms are a comma-delimited list of key/value pairs of column-names and search tokens.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>       * &lt;p&gt;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>       * For example:<a name="line.57"></a>
+<span class="sourceLineNo">058</span>       * &lt;p class='bcode'&gt;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>       *    builder.search(&lt;js&gt;"column1=foo*, column2=bar baz"&lt;/js&gt;);<a name="line.59"></a>
+<span class="sourceLineNo">060</span>       * &lt;/p&gt;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>       * &lt;p&gt;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>       * It's up to implementers to decide the syntax and meaning of the search terms.<a name="line.62"></a>
+<span class="sourceLineNo">063</span>       * &lt;p&gt;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>       * Whitespace is trimmed from column names and search tokens.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>       *<a name="line.65"></a>
+<span class="sourceLineNo">066</span>       * @param searchTerms The search terms string.<a name="line.66"></a>
+<span class="sourceLineNo">067</span>       *    Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.67"></a>
+<span class="sourceLineNo">068</span>       * @return This object (for method chaining).<a name="line.68"></a>
+<span class="sourceLineNo">069</span>       */<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      public Builder search(String searchTerms) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>         if (searchTerms != null) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>            for (String s : StringUtils.split(searchTerms, ',')) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>               int i = StringUtils.indexOf(s, '=', '&gt;', '&lt;');<a name="line.73"></a>
+<span class="sourceLineNo">074</span>               if (i == -1)<a name="line.74"></a>
+<span class="sourceLineNo">075</span>                  throw new RuntimeException("Invalid search terms: '"+searchTerms+"'");<a name="line.75"></a>
+<span class="sourceLineNo">076</span>               char c = s.charAt(i);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>               search(s.substring(0, i).trim(), s.substring(c == '=' ? i+1 : i).trim());<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>         return this;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      }<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>      /**<a name="line.83"></a>
+<span class="sourceLineNo">084</span>       * Adds a search term to this builder.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>       * &lt;p&gt;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>       * It's up to implementers to decide the syntax and meaning of the search term.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>       *<a name="line.87"></a>
+<span class="sourceLineNo">088</span>       * @param column The column being searched.<a name="line.88"></a>
+<span class="sourceLineNo">089</span>       * @param searchTerm The search term.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>       * @return This object (for method chaining).<a name="line.90"></a>
+<span class="sourceLineNo">091</span>       */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      public Builder search(String column, String searchTerm) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>         this.search.put(column, searchTerm);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>         return this;<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>       * Specifies the list of columns to view.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>       * &lt;p&gt;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>       * The columns argument is a simple comma-delimited list of column names.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>       * &lt;p&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>       * For example:<a name="line.102"></a>
+<span class="sourceLineNo">103</span>       * &lt;p class='bcode'&gt;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>       *    builder.view(&lt;js&gt;"column1, column2"&lt;/js&gt;);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>       * &lt;/p&gt;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>       * &lt;p&gt;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>       * Whitespace is trimmed from column names.<a name="line.107"></a>
+<span class="sourceLineNo">108</span>       * &lt;p&gt;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>       * Empty view columns imply view all columns.<a name="line.109"></a>
+<span class="sourceLineNo">110</span>       *<a name="line.110"></a>
+<span class="sourceLineNo">111</span>       * @param columns The columns being viewed.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>       *    Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.112"></a>
+<span class="sourceLineNo">113</span>       * @return This object (for method chaining).<a name="line.113"></a>
+<span class="sourceLineNo">114</span>       */<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      public Builder view(String columns) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>         if (columns != null)<a name="line.116"></a>
+<span class="sourceLineNo">117</span>            return view(Arrays.asList(StringUtils.split(columns, ',')));<a name="line.117"></a>
+<span class="sourceLineNo">118</span>         return this;<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>       * Specifies the list of columns to view.<a name="line.122"></a>
+<span class="sourceLineNo">123</span>       * &lt;p&gt;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>       * Empty view columns imply view all columns.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>       *<a name="line.125"></a>
+<span class="sourceLineNo">126</span>       * @param columns The columns being viewed.<a name="line.126"></a>
+<span class="sourceLineNo">127</span>       * @return This object (for method chaining).<a name="line.127"></a>
+<span class="sourceLineNo">128</span>       */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      public Builder view(Collection&lt;String&gt; columns) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>         this.view.addAll(columns);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>         return this;<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>       * Specifies the sort arguments.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>       * &lt;p&gt;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>       * The sort argument is a simple comma-delimited list of column names.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>       * &lt;br&gt;Column names can be suffixed with &lt;js&gt;'+'&lt;/js&gt; or &lt;js&gt;'-'&lt;/js&gt; to indicate ascending or descending order.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>       * &lt;br&gt;No suffix implies ascending order.<a name="line.139"></a>
+<span class="sourceLineNo">140</span>       * &lt;p&gt;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>       * For example:<a name="line.141"></a>
+<span class="sourceLineNo">142</span>       * &lt;p class='bcode'&gt;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>       *    &lt;jc&gt;// Order by column1 ascending, then column2 descending.&lt;/jc&gt;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>       *    builder.sort(&lt;js&gt;"column1, column2-"&lt;/js&gt;);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>       * &lt;/p&gt;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>       * &lt;p&gt;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>       * Note that the order of the order arguments is important.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>       * &lt;p&gt;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>       * Whitespace is trimmed from column names.<a name="line.149"></a>
+<span class="sourceLineNo">150</span>       *<a name="line.150"></a>
+<span class="sourceLineNo">151</span>       * @param sortArgs The columns to sort by.<a name="line.151"></a>
+<span class="sourceLineNo">152</span>       *    Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>       * @return This object (for method chaining).<a name="line.153"></a>
+<span class="sourceLineNo">154</span>       */<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      public Builder sort(String sortArgs) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>         if (sortArgs != null)<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            sort(Arrays.asList(StringUtils.split(sortArgs, ',')));<a name="line.157"></a>
+<span class="sourceLineNo">158</span>         return this;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>      /**<a name="line.161"></a>
+<span class="sourceLineNo">162</span>       * Specifies the sort arguments.<a name="line.162"></a>
+<span class="sourceLineNo">163</span>       * &lt;p&gt;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>       * &lt;br&gt;Column names can be suffixed with &lt;js&gt;'+'&lt;/js&gt; or &lt;js&gt;'-'&lt;/js&gt; to indicate ascending or descending order.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>       * &lt;br&gt;No suffix implies ascending order.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>       * &lt;p&gt;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>       * Note that the order of the sort is important.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>       *<a name="line.168"></a>
+<span class="sourceLineNo">169</span>       * @param sortArgs The columns to sort by.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>       *    Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>       * @return This object (for method chaining).<a name="line.171"></a>
+<span class="sourceLineNo">172</span>       */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      public Builder sort(Collection&lt;String&gt; sortArgs) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>         for (String s : sortArgs) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>            boolean isDesc = false;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>            if (endsWith(s, '-', '+')) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>               isDesc = endsWith(s, '-');<a name="line.177"></a>
+<span class="sourceLineNo">178</span>               s = s.substring(0, s.length()-1);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>            this.sort.put(s, isDesc);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>         }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>         return this;<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>       * Specifies the starting line number.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>       *<a name="line.187"></a>
+<span class="sourceLineNo">188</span>       * @param position The zero-indexed position.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>       * @return This object (for method chaining).<a name="line.189"></a>
+<span class="sourceLineNo">190</span>       */<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      public Builder position(int position) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>         this.position = position;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>         return this;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>      /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>       * Specifies the number of rows to return.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>       *<a name="line.198"></a>
+<span class="sourceLineNo">199</span>       * @param limit The number of rows to return.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>       *    If &lt;code&gt;&amp;lt;=0&lt;/code&gt;, all rows should be returned.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>       * @return This object (for method chaining).<a name="line.201"></a>
+<span class="sourceLineNo">202</span>       */<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      public Builder limit(int limit) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>         this.limit = limit;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>         return this;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>      /**<a name="line.208"></a>
+<span class="sourceLineNo">209</span>       * Specifies whether case-insensitive search should be used.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>       * &lt;p&gt;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>       * The default is &lt;jk&gt;false&lt;/jk&gt;.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>       *<a name="line.212"></a>
+<span class="sourceLineNo">213</span>       * @param value The ignore-case flag value.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>       * @return This object (for method chaining).<a name="line.214"></a>
+<span class="sourceLineNo">215</span>       */<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      public Builder ignoreCase(boolean value) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>         this.ignoreCase = value;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>         return this;<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>       * Construct the {@link SearchArgs} object.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>       * &lt;p&gt;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>       * This method can be called multiple times to construct new objects.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>       *<a name="line.225"></a>
+<span class="sourceLineNo">226</span>       * @return A new {@link SearchArgs} object initialized with values in this builder.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>       */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      public SearchArgs build() {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>         return new SearchArgs(this);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      }<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>    * The query search terms.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    * &lt;p&gt;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    * The search terms are key/value pairs consisting of column-names and search tokens.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    * &lt;p&gt;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    * It's up to implementers to decide the syntax and meaning of the search term.<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    *<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    * @return An unmodifiable map of query search terms.<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   public Map&lt;String,String&gt; getSearch() {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      return search;<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>    * The view columns.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    * &lt;p&gt;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    * The view columns are the list of columns that should be displayed.<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    * An empty list implies all columns should be displayed.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    *<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    * @return An unmodifiable list of columns to view.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   public List&lt;String&gt; getView() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      return view;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>   /**<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    * The sort columns.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    * &lt;p&gt;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    * The sort columns are key/value pairs consisting of column-names and direction flags<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    *    (&lt;jk&gt;false&lt;/jk&gt; = ascending, &lt;jk&gt;true&lt;/jk&gt; = descending).<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    *<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    * @return An unmodifiable ordered map of sort columns and directions.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    */<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   public Map&lt;String,Boolean&gt; getSort() {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      return sort;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   }<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>    * The first-row position.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    *<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    * @return The zero-indexed row number of the first row to display.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    *    Default is &lt;code&gt;0&lt;/code&gt;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    */<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   public int getPosition() {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      return position;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>   /**<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    * The number of rows to return.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    *<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    * @return The number of rows to return in the result.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    *    Default is &lt;code&gt;0&lt;/code&gt; which means return all rows.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   public int getLimit() {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      return limit;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   }<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>   /**<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    * The ignore-case flag.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    * &lt;p&gt;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    * Used in conjunction with {@link #getSearch()} to specify whether case-insensitive searches should be performed.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    *<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    * @return The number of rows to return in the result.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    *    Default is &lt;jk&gt;false&lt;/jk&gt;.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    */<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   public boolean isIgnoreCase() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      return ignoreCase;<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[04/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/rest/RequestQuery.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RequestQuery.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RequestQuery.html
index 56a74b4..f186f08 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RequestQuery.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RequestQuery.html
@@ -32,138 +32,138 @@
 <span class="sourceLineNo">024</span>import org.apache.juneau.json.*;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.juneau.parser.*;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.juneau.urlencoding.*;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>/**<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * Represents the query parameters in an HTTP request.<a name="line.29"></a>
-<span class="sourceLineNo">030</span> */<a name="line.30"></a>
-<span class="sourceLineNo">031</span>@SuppressWarnings("unchecked")<a name="line.31"></a>
-<span class="sourceLineNo">032</span>public final class RequestQuery extends LinkedHashMap&lt;String,String[]&gt; {<a name="line.32"></a>
-<span class="sourceLineNo">033</span>   private static final long serialVersionUID = 1L;<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>   private UrlEncodingParser parser;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>   private BeanSession beanSession;<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>   RequestQuery setParser(UrlEncodingParser parser) {<a name="line.38"></a>
-<span class="sourceLineNo">039</span>      this.parser = parser;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>      return this;<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>   RequestQuery setBeanSession(BeanSession beanSession) {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>      this.beanSession = beanSession;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      return this;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   }<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>   /**<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    * Adds default entries to these query parameters.<a name="line.49"></a>
-<span class="sourceLineNo">050</span>    * &lt;p&gt;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    * This includes the default queries defined on the servlet and method levels.<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    *<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    * @param defaultEntries The default entries.  Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    * @return This object (for method chaining).<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   public RequestQuery addDefault(Map&lt;String,String&gt; defaultEntries) {<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      if (defaultEntries != null) {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>         for (Map.Entry&lt;String,String&gt; e : defaultEntries.entrySet()) {<a name="line.58"></a>
-<span class="sourceLineNo">059</span>            String key = e.getKey(), value = e.getValue();<a name="line.59"></a>
-<span class="sourceLineNo">060</span>            String[] v = get(key);<a name="line.60"></a>
-<span class="sourceLineNo">061</span>            if (v == null || v.length == 0 || StringUtils.isEmpty(v[0]))<a name="line.61"></a>
-<span class="sourceLineNo">062</span>               put(key, new String[]{value});<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>      return this;<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>   /**<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    * Sets a request query parameter value.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    *<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    * @param name The parameter name.<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    * @param value The parameter value.<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    */<a name="line.73"></a>
-<span class="sourceLineNo">074</span>   public void put(String name, Object value) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      put(name, new String[]{StringUtils.toString(value)});<a name="line.75"></a>
-<span class="sourceLineNo">076</span>   }<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>   /**<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    * Returns a query parameter value.<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    * &lt;p&gt;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    * Same as {@link HttpServletRequest#getParameter(String)} except only looks in the URL string, not parameters from URL-Encoded FORM posts.<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    * &lt;p&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    * This method can be used to retrieve a parameter without triggering the underlying servlet API to load and parse the request body.<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    *<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    * @param name The URL parameter name.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    * @return The parameter value, or &lt;jk&gt;null&lt;/jk&gt; if parameter not specified or has no value (e.g. &lt;js&gt;"&amp;amp;foo"&lt;/js&gt;.<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    */<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   public String getFirst(String name) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      String[] v = get(name);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      if (v == null || v.length == 0)<a name="line.90"></a>
-<span class="sourceLineNo">091</span>         return null;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>      // Fix for behavior difference between Tomcat and WAS.<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      // getParameter("foo") on "&amp;foo" in Tomcat returns "".<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      // getParameter("foo") on "&amp;foo" in WAS returns null.<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      if (v.length == 1 &amp;&amp; v[0] == null)<a name="line.96"></a>
-<span class="sourceLineNo">097</span>         return "";<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>      return v[0];<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   }<a name="line.100"></a>
+<span class="sourceLineNo">027</span>import org.apache.juneau.utils.*;<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * Represents the query parameters in an HTTP request.<a name="line.30"></a>
+<span class="sourceLineNo">031</span> */<a name="line.31"></a>
+<span class="sourceLineNo">032</span>@SuppressWarnings("unchecked")<a name="line.32"></a>
+<span class="sourceLineNo">033</span>public final class RequestQuery extends LinkedHashMap&lt;String,String[]&gt; {<a name="line.33"></a>
+<span class="sourceLineNo">034</span>   private static final long serialVersionUID = 1L;<a name="line.34"></a>
+<span class="sourceLineNo">035</span><a name="line.35"></a>
+<span class="sourceLineNo">036</span>   private UrlEncodingParser parser;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>   private BeanSession beanSession;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>   RequestQuery setParser(UrlEncodingParser parser) {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      this.parser = parser;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>      return this;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>   }<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>   RequestQuery setBeanSession(BeanSession beanSession) {<a name="line.44"></a>
+<span class="sourceLineNo">045</span>      this.beanSession = beanSession;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>      return this;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   }<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>   /**<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    * Adds default entries to these query parameters.<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    * &lt;p&gt;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    * This includes the default queries defined on the servlet and method levels.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    *<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    * @param defaultEntries The default entries.  Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    * @return This object (for method chaining).<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   public RequestQuery addDefault(Map&lt;String,String&gt; defaultEntries) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>      if (defaultEntries != null) {<a name="line.58"></a>
+<span class="sourceLineNo">059</span>         for (Map.Entry&lt;String,String&gt; e : defaultEntries.entrySet()) {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>            String key = e.getKey(), value = e.getValue();<a name="line.60"></a>
+<span class="sourceLineNo">061</span>            String[] v = get(key);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>            if (v == null || v.length == 0 || StringUtils.isEmpty(v[0]))<a name="line.62"></a>
+<span class="sourceLineNo">063</span>               put(key, new String[]{value});<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>      return this;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   }<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>   /**<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    * Sets a request query parameter value.<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    *<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    * @param name The parameter name.<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    * @param value The parameter value.<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    */<a name="line.74"></a>
+<span class="sourceLineNo">075</span>   public void put(String name, Object value) {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      put(name, new String[]{StringUtils.toString(value)});<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>    * Returns a query parameter value.<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    * &lt;p&gt;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    * Same as {@link HttpServletRequest#getParameter(String)} except only looks in the URL string, not parameters from URL-Encoded FORM posts.<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    * &lt;p&gt;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    * This method can be used to retrieve a parameter without triggering the underlying servlet API to load and parse the request body.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    * &lt;p&gt;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    * If multiple query parameters have the same name, this returns only the first instance.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    *<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    * @param name The URL parameter name.<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    * @return The parameter value, or &lt;jk&gt;null&lt;/jk&gt; if parameter not specified or has no value (e.g. &lt;js&gt;"&amp;amp;foo"&lt;/js&gt;.<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    */<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   public String getString(String name) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      String[] v = get(name);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      if (v == null || v.length == 0)<a name="line.93"></a>
+<span class="sourceLineNo">094</span>         return null;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>      // Fix for behavior difference between Tomcat and WAS.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      // getParameter("foo") on "&amp;foo" in Tomcat returns "".<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      // getParameter("foo") on "&amp;foo" in WAS returns null.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      if (v.length == 1 &amp;&amp; v[0] == null)<a name="line.99"></a>
+<span class="sourceLineNo">100</span>         return "";<a name="line.100"></a>
 <span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>   /**<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    * Same as {@link #getFirst(String)} but returns the specified default value if the query parameter was not specified.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    *<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    * @param name The URL parameter name.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    * @param def The default value.<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    * @return The parameter value, or the default value if parameter not specified or has no value (e.g. &lt;js&gt;"&amp;amp;foo"&lt;/js&gt;.<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   public String getFirst(String name, String def) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      String s = getFirst(name);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      return StringUtils.isEmpty(s) ? def : s;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>   /**<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    * Returns the specified query parameter value converted to a POJO.<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    * &lt;p&gt;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    * This method can be used to retrieve a parameter without triggering the underlying servlet API to load and parse the request body.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    * &lt;p&gt;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    * &lt;p class='bcode'&gt;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    *    &lt;jc&gt;// Parse into an integer.&lt;/jc&gt;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    *    &lt;jk&gt;int&lt;/jk&gt; myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, &lt;jk&gt;int&lt;/jk&gt;.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    *<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    *    &lt;jc&gt;// Parse into an int array.&lt;/jc&gt;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    *    &lt;jk&gt;int&lt;/jk&gt;[] myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, &lt;jk&gt;int&lt;/jk&gt;[].&lt;jk&gt;class&lt;/jk&gt;);<a name="line.125"></a>
+<span class="sourceLineNo">102</span>      return v[0];<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   }<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>   /**<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    * Same as {@link #getString(String)} but returns the specified default value if the query parameter was not specified.<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    *<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    * @param name The URL parameter name.<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    * @param def The default value.<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    * @return The parameter value, or the default value if parameter not specified or has no value (e.g. &lt;js&gt;"&amp;amp;foo"&lt;/js&gt;.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    */<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   public String getString(String name, String def) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      String s = getString(name);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      return StringUtils.isEmpty(s) ? def : s;<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>   /**<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    * Same as {@link #getString(String)} but converts the value to an integer.<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    *<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    * @param name The URL parameter name.<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    * @return The parameter value, or &lt;code&gt;0&lt;/code&gt; if parameter not specified or has no value (e.g. &lt;js&gt;"&amp;amp;foo"&lt;/js&gt;.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   public int getInt(String name) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      return getInt(name, 0);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   }<a name="line.125"></a>
 <span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    *    &lt;jc&gt;// Parse into a bean.&lt;/jc&gt;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    *    MyBean myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, MyBean.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.128"></a>
+<span class="sourceLineNo">127</span>   /**<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    * Same as {@link #getString(String,String)} but converts the value to an integer.<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    *<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    *    &lt;jc&gt;// Parse into a linked-list of objects.&lt;/jc&gt;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    *    List myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    *<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    *    &lt;jc&gt;// Parse into a map of object keys/values.&lt;/jc&gt;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    *    Map myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    * &lt;/p&gt;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    *<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    * @param name The parameter name.<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    * @param type The class type to convert the parameter value to.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    * @return The parameter value converted to the specified class type.<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    * @throws ParseException<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    */<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   public &lt;T&gt; T get(String name, Class&lt;T&gt; type) throws ParseException {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      return get(name, beanSession.getClassMeta(type));<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>    * Same as {@link #get(String, Class)} except returns a default value if not found.<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    *<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    * @param name The parameter name.<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    * @param def The default value if the parameter was not specified or is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    * @param type The class type to convert the parameter value to.<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    * @return The parameter value converted to the specified class type.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    * @throws ParseException<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    */<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   public &lt;T&gt; T get(String name, T def, Class&lt;T&gt; type) throws ParseException {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      return get(name, def, beanSession.getClassMeta(type));<a name="line.158"></a>
+<span class="sourceLineNo">130</span>    * @param name The URL parameter name.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    * @param def The default value.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    * @return The parameter value, or the default value if parameter not specified or has no value (e.g. &lt;js&gt;"&amp;amp;foo"&lt;/js&gt;.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    */<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   public int getInt(String name, int def) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      String s = getString(name);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return StringUtils.isEmpty(s) ? def : Integer.parseInt(s);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>   /**<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    * Same as {@link #getString(String)} but converts the value to a boolean.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    *<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    * @param name The URL parameter name.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    * @return The parameter value, or &lt;jk&gt;false&lt;/jk&gt; if parameter not specified or has no value (e.g. &lt;js&gt;"&amp;amp;foo"&lt;/js&gt;.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    */<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   public boolean getBoolean(String name) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      return getBoolean(name, false);<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>    * Same as {@link #getString(String,String)} but converts the value to a boolean.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    *<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    * @param name The URL parameter name.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    * @param def The default value.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    * @return The parameter value, or the default value if parameter not specified or has no value (e.g. &lt;js&gt;"&amp;amp;foo"&lt;/js&gt;.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    */<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   public boolean getBoolean(String name, boolean def) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      String s = getString(name);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      return StringUtils.isEmpty(s) ? def : Boolean.parseBoolean(s);<a name="line.158"></a>
 <span class="sourceLineNo">159</span>   }<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
 <span class="sourceLineNo">161</span>   /**<a name="line.161"></a>
@@ -171,171 +171,271 @@
 <span class="sourceLineNo">163</span>    * &lt;p&gt;<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    * This method can be used to retrieve a parameter without triggering the underlying servlet API to load and parse the request body.<a name="line.164"></a>
 <span class="sourceLineNo">165</span>    * &lt;p&gt;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    * Use this method if you want to parse into a parameterized &lt;code&gt;Map&lt;/code&gt;/&lt;code&gt;Collection&lt;/code&gt; object.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    * &lt;p&gt;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    * &lt;p class='bcode'&gt;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    *    &lt;jc&gt;// Parse into a linked-list of strings.&lt;/jc&gt;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    *    Listt&amp;lt;String&amp;gt; myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    *<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    *    &lt;jc&gt;// Parse into a linked-list of linked-lists of strings.&lt;/jc&gt;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    *    Listt&amp;lt;List&amp;lt;String&amp;gt;&amp;gt; myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    *<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    *    &lt;jc&gt;// Parse into a map of string keys/values.&lt;/jc&gt;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    *    Map&amp;lt;String,String&amp;gt; myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    *<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    *    &lt;jc&gt;// Parse into a map containing string keys and values of lists containing beans.&lt;/jc&gt;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    *    Map&amp;lt;String,List&amp;lt;MyBean&amp;gt;&amp;gt; myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;, List.&lt;jk&gt;class&lt;/jk&gt;, MyBean.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    * &lt;/p&gt;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    *<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    * @param name The parameter name.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    * @param type The type of object to create.<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    * @return The parameter value converted to the specified class type.<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    * @throws ParseException<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    */<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   public &lt;T&gt; T get(String name, Type type, Type...args) throws ParseException {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      return (T)parse(name, beanSession.getClassMeta(type, args));<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>   /**<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    * Same as {@link #get(String, Class)} except returns a default value if not found.<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    *<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    * @param name The parameter name.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    * @param type The type of object to create.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    * @param def The default value if the parameter was not specified or is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    * @return The parameter value converted to the specified class type.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    * @throws ParseException<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    */<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   public &lt;T&gt; T get(String name, Object def, Type type, Type...args) throws ParseException {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      return (T)parse(name, def, beanSession.getClassMeta(type, args));<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>    * Same as {@link #get(String, Class)} except for use on multi-part parameters<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    * (e.g. &lt;js&gt;"&amp;amp;key=1&amp;amp;key=2&amp;amp;key=3"&lt;/js&gt; instead of &lt;js&gt;"&amp;amp;key=(1,2,3)"&lt;/js&gt;).<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    * &lt;p&gt;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    * This method must only be called when parsing into classes of type Collection or array.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    *<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    * @param name The query parameter name.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    * @param c The class type to convert the parameter value to.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    * @return The query parameter value converted to the specified class type.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    * @throws ParseException<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   public &lt;T&gt; T getAll(String name, Class&lt;T&gt; c) throws ParseException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      return getAll(name, beanSession.getClassMeta(c));<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>   /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    * Same as {@link #get(String, Type, Type...)} except for use on multi-part parameters<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    * (e.g. &lt;js&gt;"&amp;amp;key=1&amp;amp;key=2&amp;amp;key=3"&lt;/js&gt; instead of &lt;js&gt;"&amp;amp;key=(1,2,3)"&lt;/js&gt;).<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    * &lt;p&gt;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    * This method must only be called when parsing into classes of type Collection or array.<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    *<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    * @param name The query parameter name.<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    * @param type The type of object to create.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    * @return The query parameter value converted to the specified class type.<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    * @throws ParseException<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>   public &lt;T&gt; T getAll(String name, Type type, Type...args) throws ParseException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      return (T)parseAll(name, beanSession.getClassMeta(type, args));<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>   /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if the request contains any of the specified query parameters.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    *<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    * @param params The list of parameters to check for.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the request contains any of the specified query parameters.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   public boolean containsAnyKeys(String...params) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      for (String p : params)<a name="line.258"></a>
-<span class="sourceLineNo">259</span>         if (containsKey(p))<a name="line.259"></a>
-<span class="sourceLineNo">260</span>            return true;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return false;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>   /* Workhorse method */<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   private &lt;T&gt; T parse(String name, T def, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      String val = getFirst(name);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      if (val == null)<a name="line.267"></a>
-<span class="sourceLineNo">268</span>         return def;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      return parseValue(val, cm);<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>   /* Workhorse method */<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   private &lt;T&gt; T parse(String name, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      String val = getFirst(name);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      if (cm.isPrimitive() &amp;&amp; (val == null || val.isEmpty()))<a name="line.275"></a>
-<span class="sourceLineNo">276</span>         return cm.getPrimitiveDefault();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      return parseValue(val, cm);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>   /* Workhorse method */<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   @SuppressWarnings("rawtypes")<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   private &lt;T&gt; T parseAll(String name, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      String[] p = get(name);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      if (p == null)<a name="line.284"></a>
-<span class="sourceLineNo">285</span>         return null;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      if (cm.isArray()) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>         List c = new ArrayList();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>         for (int i = 0; i &lt; p.length; i++)<a name="line.288"></a>
-<span class="sourceLineNo">289</span>            c.add(parseValue(p[i], cm.getElementType()));<a name="line.289"></a>
-<span class="sourceLineNo">290</span>         return (T)toArray(c, cm.getElementType().getInnerClass());<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      } else if (cm.isCollection()) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>         try {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>            Collection c = (Collection)(cm.canCreateNewInstance() ? cm.newInstance() : new ObjectList());<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            for (int i = 0; i &lt; p.length; i++)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>               c.add(parseValue(p[i], cm.getElementType()));<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            return (T)c;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>         } catch (ParseException e) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>            throw e;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>         } catch (Exception e) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>            // Typically an instantiation exception.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>            throw new ParseException(e);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>         }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      throw new ParseException("Invalid call to getQueryParameters(String, ClassMeta).  Class type must be a Collection or array.");<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>   private &lt;T&gt; T parseValue(String val, ClassMeta&lt;T&gt; c) throws ParseException {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      return parser.parse(PartType.QUERY, val, c);<a name="line.308"></a>
+<span class="sourceLineNo">166</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    * &lt;p class='bcode'&gt;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    *    &lt;jc&gt;// Parse into an integer.&lt;/jc&gt;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    *    &lt;jk&gt;int&lt;/jk&gt; myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, &lt;jk&gt;int&lt;/jk&gt;.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    *<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    *    &lt;jc&gt;// Parse into an int array.&lt;/jc&gt;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    *    &lt;jk&gt;int&lt;/jk&gt;[] myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, &lt;jk&gt;int&lt;/jk&gt;[].&lt;jk&gt;class&lt;/jk&gt;);<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>    *    &lt;jc&gt;// Parse into a bean.&lt;/jc&gt;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    *    MyBean myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, MyBean.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    *<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    *    &lt;jc&gt;// Parse into a linked-list of objects.&lt;/jc&gt;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    *    List myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    *<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    *    &lt;jc&gt;// Parse into a map of object keys/values.&lt;/jc&gt;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    *    Map myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    * &lt;/p&gt;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    *<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    * @param name The parameter name.<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    * @param type The class type to convert the parameter value to.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    * @return The parameter value converted to the specified class type.<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    * @throws ParseException<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   public &lt;T&gt; T get(String name, Class&lt;T&gt; type) throws ParseException {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      return get(name, beanSession.getClassMeta(type));<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>    * Same as {@link #get(String, Class)} except returns a default value if not found.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    *<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    * @param name The parameter name.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    * @param def The default value if the parameter was not specified or is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    * @param type The class type to convert the parameter value to.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    * @return The parameter value converted to the specified class type.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    * @throws ParseException<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   public &lt;T&gt; T get(String name, T def, Class&lt;T&gt; type) throws ParseException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      return get(name, def, beanSession.getClassMeta(type));<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 the specified query parameter value converted to a POJO.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    * &lt;p&gt;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    * This method can be used to retrieve a parameter without triggering the underlying servlet API to load and parse the request body.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    * &lt;p&gt;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    * Use this method if you want to parse into a parameterized &lt;code&gt;Map&lt;/code&gt;/&lt;code&gt;Collection&lt;/code&gt; object.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    * &lt;p&gt;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    * &lt;p class='bcode'&gt;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    *    &lt;jc&gt;// Parse into a linked-list of strings.&lt;/jc&gt;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    *    Listt&amp;lt;String&amp;gt; myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    *<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    *    &lt;jc&gt;// Parse into a linked-list of linked-lists of strings.&lt;/jc&gt;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    *    Listt&amp;lt;List&amp;lt;String&amp;gt;&amp;gt; myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    *<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    *    &lt;jc&gt;// Parse into a map of string keys/values.&lt;/jc&gt;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    *    Map&amp;lt;String,String&amp;gt; myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    *<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    *    &lt;jc&gt;// Parse into a map containing string keys and values of lists containing beans.&lt;/jc&gt;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    *    Map&amp;lt;String,List&amp;lt;MyBean&amp;gt;&amp;gt; myparam = req.getQueryParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;, List.&lt;jk&gt;class&lt;/jk&gt;, MyBean.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    * &lt;/p&gt;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    *<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    * @param name The parameter name.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    * @param type The type of object to create.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    * @return The parameter value converted to the specified class type.<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    * @throws ParseException<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    */<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   public &lt;T&gt; T get(String name, Type type, Type...args) throws ParseException {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return (T)parse(name, beanSession.getClassMeta(type, args));<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>   /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    * Same as {@link #get(String, Class)} except returns a default value if not found.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    *<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    * @param name The parameter name.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    * @param type The type of object to create.<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    * @param def The default value if the parameter was not specified or is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    * @return The parameter value converted to the specified class type.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    * @throws ParseException<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   public &lt;T&gt; T get(String name, Object def, Type type, Type...args) throws ParseException {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      return (T)parse(name, def, beanSession.getClassMeta(type, args));<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>   /**<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    * Same as {@link #get(String, Class)} except for use on multi-part parameters<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    * (e.g. &lt;js&gt;"&amp;amp;key=1&amp;amp;key=2&amp;amp;key=3"&lt;/js&gt; instead of &lt;js&gt;"&amp;amp;key=(1,2,3)"&lt;/js&gt;).<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    * &lt;p&gt;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    * This method must only be called when parsing into classes of type Collection or array.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    *<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    * @param name The query parameter name.<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    * @param c The class type to convert the parameter value to.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    * @return The query parameter value converted to the specified class type.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    * @throws ParseException<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    */<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   public &lt;T&gt; T getAll(String name, Class&lt;T&gt; c) throws ParseException {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      return getAll(name, beanSession.getClassMeta(c));<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>   /**<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    * Same as {@link #get(String, Type, Type...)} except for use on multi-part parameters<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    * (e.g. &lt;js&gt;"&amp;amp;key=1&amp;amp;key=2&amp;amp;key=3"&lt;/js&gt; instead of &lt;js&gt;"&amp;amp;key=(1,2,3)"&lt;/js&gt;).<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    * &lt;p&gt;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    * This method must only be called when parsing into classes of type Collection or array.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    *<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    * @param name The query parameter name.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    * @param type The type of object to create.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    * @return The query parameter value converted to the specified class type.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    * @throws ParseException<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    */<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   public &lt;T&gt; T getAll(String name, Type type, Type...args) throws ParseException {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      return (T)parseAll(name, beanSession.getClassMeta(type, args));<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>   /**<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if the request contains any of the specified query parameters.<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    *<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    * @param params The list of parameters to check for.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the request contains any of the specified query parameters.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    */<a name="line.303"></a>
+<span class="sourceLineNo">304</span>   public boolean containsAnyKeys(String...params) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      for (String p : params)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>         if (containsKey(p))<a name="line.306"></a>
+<span class="sourceLineNo">307</span>            return true;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      return false;<a name="line.308"></a>
 <span class="sourceLineNo">309</span>   }<a name="line.309"></a>
 <span class="sourceLineNo">310</span><a name="line.310"></a>
 <span class="sourceLineNo">311</span>   /**<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    * Converts the query parameters to a readable string.<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    *<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    * @param sorted Sort the query parameters by name.<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    * @return A JSON string containing the contents of the query parameters.<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    */<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   public String toString(boolean sorted) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      Map&lt;String,Object&gt; m = (sorted ? new TreeMap&lt;String,Object&gt;() : new LinkedHashMap&lt;String,Object&gt;());<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      for (Map.Entry&lt;String,String[]&gt; e : this.entrySet()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>         String[] v = e.getValue();<a name="line.320"></a>
-<span class="sourceLineNo">321</span>         m.put(e.getKey(), v.length == 1 ? v[0] : v);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      return JsonSerializer.DEFAULT_LAX.toString(m);<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>   @Override /* Object */<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   public String toString() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      return toString(false);<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">312</span>    * Locates the special search query arguments in the query and returns them as a {@link SearchArgs} object.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    * &lt;p&gt;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    * The query arguments are as follows:<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    * &lt;ul&gt;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    *    &lt;li&gt;&lt;js&gt;"&amp;s="&lt;/js&gt; - A comma-delimited list of column-name/search-token pairs.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    *       &lt;br&gt;Example: &lt;js&gt;"&amp;s=column1=foo*,column2=*bar"&lt;/js&gt;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    *    &lt;li&gt;&lt;js&gt;"&amp;v="&lt;/js&gt; - A comma-delimited list column names to view.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    *       &lt;br&gt;Example: &lt;js&gt;"&amp;v=column1,column2"&lt;/js&gt;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    *    &lt;li&gt;&lt;js&gt;"&amp;o="&lt;/js&gt; - A comma-delimited list column names to sort by.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    *       &lt;br&gt;Column names can be suffixed with &lt;js&gt;'-'&lt;/js&gt; to indicate descending order.<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    *       &lt;br&gt;Example: &lt;js&gt;"&amp;o=column1,column2-"&lt;/js&gt;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    *    &lt;li&gt;&lt;js&gt;"&amp;p="&lt;/js&gt; - The zero-index row number of the first row to display.<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    *       &lt;br&gt;Example: &lt;js&gt;"&amp;p=100"&lt;/js&gt;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    *    &lt;li&gt;&lt;js&gt;"&amp;l="&lt;/js&gt; - The number of rows to return.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    *       &lt;br&gt;&lt;code&gt;0&lt;/code&gt; implies return all rows.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    *       &lt;br&gt;Example: &lt;js&gt;"&amp;l=100"&lt;/js&gt;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    *    &lt;li&gt;&lt;js&gt;"&amp;i="&lt;/js&gt; - The case-insensitive search flag.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    *       &lt;br&gt;Example: &lt;js&gt;"&amp;i=true"&lt;/js&gt;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    * &lt;/ul&gt;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    * &lt;p&gt;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    * Whitespace is trimmed in the parameters.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    *<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    * @return A new {@link SearchArgs} object initialized with the special search query arguments.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    *    &lt;jk&gt;null&lt;/jk&gt; if no search arguments were found.<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    */<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   public SearchArgs getSearchArgs() {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      if (hasAny("s","v","o","p","l","i")) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>         return new SearchArgs.Builder()<a name="line.339"></a>
+<span class="sourceLineNo">340</span>            .search(getString("s"))<a name="line.340"></a>
+<span class="sourceLineNo">341</span>            .view(getString("v"))<a name="line.341"></a>
+<span class="sourceLineNo">342</span>            .sort(getString("o"))<a name="line.342"></a>
+<span class="sourceLineNo">343</span>            .position(getInt("p"))<a name="line.343"></a>
+<span class="sourceLineNo">344</span>            .limit(getInt("l"))<a name="line.344"></a>
+<span class="sourceLineNo">345</span>            .ignoreCase(getBoolean("i"))<a name="line.345"></a>
+<span class="sourceLineNo">346</span>            .build();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      }<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   }<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>   /**<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if the query parameters contains any of the specified names.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    *<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    * @param paramNames The parameter names to check for.<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the query parameters contains any of the specified names.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    */<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   public boolean hasAny(String...paramNames) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      for (String p : paramNames)<a name="line.358"></a>
+<span class="sourceLineNo">359</span>         if (containsKey(p))<a name="line.359"></a>
+<span class="sourceLineNo">360</span>            return true;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      return false;<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>   /* Workhorse method */<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   private &lt;T&gt; T parse(String name, T def, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      String val = getString(name);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      if (val == null)<a name="line.367"></a>
+<span class="sourceLineNo">368</span>         return def;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      return parseValue(val, cm);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>   /* Workhorse method */<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   private &lt;T&gt; T parse(String name, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      String val = getString(name);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      if (cm.isPrimitive() &amp;&amp; (val == null || val.isEmpty()))<a name="line.375"></a>
+<span class="sourceLineNo">376</span>         return cm.getPrimitiveDefault();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      return parseValue(val, cm);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   }<a name="line.378"></a>
+<span class="sourceLineNo">379</span><a name="line.379"></a>
+<span class="sourceLineNo">380</span>   /* Workhorse method */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   @SuppressWarnings("rawtypes")<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   private &lt;T&gt; T parseAll(String name, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      String[] p = get(name);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      if (p == null)<a name="line.384"></a>
+<span class="sourceLineNo">385</span>         return null;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      if (cm.isArray()) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>         List c = new ArrayList();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>         for (int i = 0; i &lt; p.length; i++)<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            c.add(parseValue(p[i], cm.getElementType()));<a name="line.389"></a>
+<span class="sourceLineNo">390</span>         return (T)toArray(c, cm.getElementType().getInnerClass());<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      } else if (cm.isCollection()) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>         try {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>            Collection c = (Collection)(cm.canCreateNewInstance() ? cm.newInstance() : new ObjectList());<a name="line.393"></a>
+<span class="sourceLineNo">394</span>            for (int i = 0; i &lt; p.length; i++)<a name="line.394"></a>
+<span class="sourceLineNo">395</span>               c.add(parseValue(p[i], cm.getElementType()));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>            return (T)c;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>         } catch (ParseException e) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            throw e;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>         } catch (Exception e) {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>            // Typically an instantiation exception.<a name="line.400"></a>
+<span class="sourceLineNo">401</span>            throw new ParseException(e);<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>      throw new ParseException("Invalid call to getQueryParameters(String, ClassMeta).  Class type must be a Collection or array.");<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>   private &lt;T&gt; T parseValue(String val, ClassMeta&lt;T&gt; c) throws ParseException {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      return parser.parse(PartType.QUERY, val, c);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   }<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>    * Converts the query parameters to a readable string.<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    *<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    * @param sorted Sort the query parameters by name.<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    * @return A JSON string containing the contents of the query parameters.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   public String toString(boolean sorted) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      Map&lt;String,Object&gt; m = (sorted ? new TreeMap&lt;String,Object&gt;() : new LinkedHashMap&lt;String,Object&gt;());<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      for (Map.Entry&lt;String,String[]&gt; e : this.entrySet()) {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>         String[] v = e.getValue();<a name="line.420"></a>
+<span class="sourceLineNo">421</span>         m.put(e.getKey(), v.length == 1 ? v[0] : v);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      return JsonSerializer.DEFAULT_LAX.toString(m);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   }<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>   @Override /* Object */<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   public String toString() {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      return toString(false);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>}<a name="line.430"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/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 7ed9936..841c766 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
@@ -118,7 +118,7 @@
 <span class="sourceLineNo">110</span>         // Can be overridden through a "method" GET attribute.<a name="line.110"></a>
 <span class="sourceLineNo">111</span>         String _method = super.getMethod();<a name="line.111"></a>
 <span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>         String m = getQuery().getFirst("method");<a name="line.113"></a>
+<span class="sourceLineNo">113</span>         String m = getQuery().getString("method");<a name="line.113"></a>
 <span class="sourceLineNo">114</span>         if (context.allowMethodParam(m))<a name="line.114"></a>
 <span class="sourceLineNo">115</span>            _method = m;<a name="line.115"></a>
 <span class="sourceLineNo">116</span><a name="line.116"></a>
@@ -133,7 +133,7 @@
 <span class="sourceLineNo">125</span>         body = new RequestBody(this);<a name="line.125"></a>
 <span class="sourceLineNo">126</span><a name="line.126"></a>
 <span class="sourceLineNo">127</span>         if (context.isAllowBodyParam()) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>            String b = getQuery().getFirst("body");<a name="line.128"></a>
+<span class="sourceLineNo">128</span>            String b = getQuery().getString("body");<a name="line.128"></a>
 <span class="sourceLineNo">129</span>            if (b != null) {<a name="line.129"></a>
 <span class="sourceLineNo">130</span>               headers.put("Content-Type", UonSerializer.DEFAULT.getResponseContentType());<a name="line.130"></a>
 <span class="sourceLineNo">131</span>               body.load(b.getBytes(UTF8));<a name="line.131"></a>
@@ -143,7 +143,7 @@
 <span class="sourceLineNo">135</span>         if (context.isAllowHeaderParams())<a name="line.135"></a>
 <span class="sourceLineNo">136</span>            headers.setQueryParams(queryParams);<a name="line.136"></a>
 <span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>         debug = "true".equals(getQuery().getFirst("debug", "false")) || "true".equals(getHeaders().getFirst("Debug", "false"));<a name="line.138"></a>
+<span class="sourceLineNo">138</span>         debug = "true".equals(getQuery().getString("debug", "false")) || "true".equals(getHeaders().getString("Debug", "false"));<a name="line.138"></a>
 <span class="sourceLineNo">139</span><a name="line.139"></a>
 <span class="sourceLineNo">140</span>         this.pathParams = new RequestPathMatch();<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
@@ -161,11 +161,11 @@
 <span class="sourceLineNo">153</span>   final void init(Method javaMethod, ObjectMap properties, Map&lt;String,String&gt; defHeader,<a name="line.153"></a>
 <span class="sourceLineNo">154</span>         Map&lt;String,String&gt; defQuery, Map&lt;String,String&gt; defFormData, String defaultCharset,<a name="line.154"></a>
 <span class="sourceLineNo">155</span>         SerializerGroup mSerializers, ParserGroup mParsers, UrlEncodingParser mUrlEncodingParser,<a name="line.155"></a>
-<span class="sourceLineNo">156</span>         EncoderGroup encoders, Map&lt;String,Widget&gt; widgets) {<a name="line.156"></a>
+<span class="sourceLineNo">156</span>         BeanContext beanContext, EncoderGroup encoders, Map&lt;String,Widget&gt; widgets) {<a name="line.156"></a>
 <span class="sourceLineNo">157</span>      this.javaMethod = javaMethod;<a name="line.157"></a>
 <span class="sourceLineNo">158</span>      this.properties = properties;<a name="line.158"></a>
 <span class="sourceLineNo">159</span>      this.urlEncodingParser = mUrlEncodingParser;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      this.beanSession = urlEncodingParser.getBeanContext().createSession();<a name="line.160"></a>
+<span class="sourceLineNo">160</span>      this.beanSession = beanContext.createSession();<a name="line.160"></a>
 <span class="sourceLineNo">161</span>      this.pathParams<a name="line.161"></a>
 <span class="sourceLineNo">162</span>         .setParser(urlEncodingParser)<a name="line.162"></a>
 <span class="sourceLineNo">163</span>         .setBeanSession(beanSession);<a name="line.163"></a>
@@ -261,7 +261,7 @@
 <span class="sourceLineNo">253</span><a name="line.253"></a>
 <span class="sourceLineNo">254</span>   @Override /* ServletRequest */<a name="line.254"></a>
 <span class="sourceLineNo">255</span>   public String getHeader(String name) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return getHeaders().getFirst(name);<a name="line.256"></a>
+<span class="sourceLineNo">256</span>      return getHeaders().getString(name);<a name="line.256"></a>
 <span class="sourceLineNo">257</span>   }<a name="line.257"></a>
 <span class="sourceLineNo">258</span><a name="line.258"></a>
 <span class="sourceLineNo">259</span>   @Override /* ServletRequest */<a name="line.259"></a>
@@ -314,7 +314,7 @@
 <span class="sourceLineNo">306</span><a name="line.306"></a>
 <span class="sourceLineNo">307</span>   @Override /* ServletRequest */<a name="line.307"></a>
 <span class="sourceLineNo">308</span>   public Locale getLocale() {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      String h = headers.getFirst("Accept-Language");<a name="line.309"></a>
+<span class="sourceLineNo">309</span>      String h = headers.getString("Accept-Language");<a name="line.309"></a>
 <span class="sourceLineNo">310</span>      if (h != null) {<a name="line.310"></a>
 <span class="sourceLineNo">311</span>         MediaTypeRange[] mr = MediaTypeRange.parse(h);<a name="line.311"></a>
 <span class="sourceLineNo">312</span>         if (mr.length &gt; 0)<a name="line.312"></a>
@@ -325,7 +325,7 @@
 <span class="sourceLineNo">317</span><a name="line.317"></a>
 <span class="sourceLineNo">318</span>   @Override /* ServletRequest */<a name="line.318"></a>
 <span class="sourceLineNo">319</span>   public Enumeration&lt;Locale&gt; getLocales() {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      String h = headers.getFirst("Accept-Language");<a name="line.320"></a>
+<span class="sourceLineNo">320</span>      String h = headers.getString("Accept-Language");<a name="line.320"></a>
 <span class="sourceLineNo">321</span>      if (h != null) {<a name="line.321"></a>
 <span class="sourceLineNo">322</span>         MediaTypeRange[] mr = MediaTypeRange.parse(h);<a name="line.322"></a>
 <span class="sourceLineNo">323</span>         if (mr.length &gt; 0) {<a name="line.323"></a>
@@ -357,12 +357,12 @@
 <span class="sourceLineNo">349</span>   }<a name="line.349"></a>
 <span class="sourceLineNo">350</span><a name="line.350"></a>
 <span class="sourceLineNo">351</span>   /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    * Shortcut for calling &lt;code&gt;getQuery().getFirst(name)&lt;/code&gt;.<a name="line.352"></a>
+<span class="sourceLineNo">352</span>    * Shortcut for calling &lt;code&gt;getQuery().getString(name)&lt;/code&gt;.<a name="line.352"></a>
 <span class="sourceLineNo">353</span>    * @param name The query parameter name.<a name="line.353"></a>
 <span class="sourceLineNo">354</span>    * @return The query parameter value, or &lt;jk&gt;null&lt;jk&gt; if not found.<a name="line.354"></a>
 <span class="sourceLineNo">355</span>    */<a name="line.355"></a>
 <span class="sourceLineNo">356</span>   public String getQuery(String name) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      return getQuery().getFirst(name);<a name="line.357"></a>
+<span class="sourceLineNo">357</span>      return getQuery().getString(name);<a name="line.357"></a>
 <span class="sourceLineNo">358</span>   }<a name="line.358"></a>
 <span class="sourceLineNo">359</span><a name="line.359"></a>
 <span class="sourceLineNo">360</span><a name="line.360"></a>
@@ -397,12 +397,12 @@
 <span class="sourceLineNo">389</span>   }<a name="line.389"></a>
 <span class="sourceLineNo">390</span><a name="line.390"></a>
 <span class="sourceLineNo">391</span>   /**<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    * Shortcut for calling &lt;code&gt;getFormData().getFirst(name)&lt;/code&gt;.<a name="line.392"></a>
+<span class="sourceLineNo">392</span>    * Shortcut for calling &lt;code&gt;getFormData().getString(name)&lt;/code&gt;.<a name="line.392"></a>
 <span class="sourceLineNo">393</span>    * @param name The form data parameter name.<a name="line.393"></a>
 <span class="sourceLineNo">394</span>    * @return The form data parameter value, or &lt;jk&gt;null&lt;jk&gt; if not found.<a name="line.394"></a>
 <span class="sourceLineNo">395</span>    */<a name="line.395"></a>
 <span class="sourceLineNo">396</span>   public String getFormData(String name) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      return getFormData().getFirst(name);<a name="line.397"></a>
+<span class="sourceLineNo">397</span>      return getFormData().getString(name);<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>
@@ -621,7 +621,7 @@
 <span class="sourceLineNo">613</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if {@code &amp;amp;plainText=true} was specified as a URL parameter<a name="line.613"></a>
 <span class="sourceLineNo">614</span>    */<a name="line.614"></a>
 <span class="sourceLineNo">615</span>   public boolean isPlainText() {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>      return "true".equals(getQuery().getFirst("plainText", "false"));<a name="line.616"></a>
+<span class="sourceLineNo">616</span>      return "true".equals(getQuery().getString("plainText", "false"));<a name="line.616"></a>
 <span class="sourceLineNo">617</span>   }<a name="line.617"></a>
 <span class="sourceLineNo">618</span><a name="line.618"></a>
 <span class="sourceLineNo">619</span>   /**<a name="line.619"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/rest/converters/Introspectable.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/converters/Introspectable.html b/content/site/apidocs/src-html/org/apache/juneau/rest/converters/Introspectable.html
index 649a79d..2f89399 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/converters/Introspectable.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/converters/Introspectable.html
@@ -48,8 +48,8 @@
 <span class="sourceLineNo">040</span>   @Override /* RestConverter */<a name="line.40"></a>
 <span class="sourceLineNo">041</span>   @SuppressWarnings({"unchecked", "rawtypes"})<a name="line.41"></a>
 <span class="sourceLineNo">042</span>   public Object convert(RestRequest req, Object o, ClassMeta cm) throws RestException {<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      String method = req.getQuery().getFirst("invokeMethod");<a name="line.43"></a>
-<span class="sourceLineNo">044</span>      String args = req.getQuery().getFirst("invokeArgs");<a name="line.44"></a>
+<span class="sourceLineNo">043</span>      String method = req.getQuery().getString("invokeMethod");<a name="line.43"></a>
+<span class="sourceLineNo">044</span>      String args = req.getQuery().getString("invokeArgs");<a name="line.44"></a>
 <span class="sourceLineNo">045</span>      if (method == null)<a name="line.45"></a>
 <span class="sourceLineNo">046</span>         return o;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>      try {<a name="line.47"></a>


[07/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/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 f8d6189..2dd5b0f 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
@@ -750,787 +750,826 @@
 <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>    * Converts the specified number into a 4 hexadecimal characters.<a name="line.745"></a>
+<span class="sourceLineNo">745</span>    * Same as {@link #endsWith(String, char)} except check for multiple characters.<a name="line.745"></a>
 <span class="sourceLineNo">746</span>    *<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    * @param num The number to convert to hex.<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    * @return A &lt;code&gt;&lt;jk&gt;char&lt;/jk&gt;[4]&lt;/code&gt; containing the specified characters.<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    */<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   public static final char[] toHex(int num) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>      char[] n = new char[4];<a name="line.751"></a>
-<span class="sourceLineNo">752</span>      int a = num%16;<a name="line.752"></a>
-<span class="sourceLineNo">753</span>      n[3] = (char)(a &gt; 9 ? 'A'+a-10 : '0'+a);<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      int base = 16;<a name="line.754"></a>
-<span class="sourceLineNo">755</span>      for (int i = 1; i &lt; 4; i++) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>         a = (num/base)%16;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>         base &lt;&lt;= 4;<a name="line.757"></a>
-<span class="sourceLineNo">758</span>         n[3-i] = (char)(a &gt; 9 ? 'A'+a-10 : '0'+a);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>      }<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      return n;<a name="line.760"></a>
-<span class="sourceLineNo">761</span>   }<a name="line.761"></a>
-<span class="sourceLineNo">762</span><a name="line.762"></a>
-<span class="sourceLineNo">763</span>   /**<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    * Tests two strings for equality, but gracefully handles nulls.<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    *<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    * @param s1 String 1.<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    * @param s2 String 2.<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the strings are equal.<a name="line.768"></a>
+<span class="sourceLineNo">747</span>    * @param s The string to check.  Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    * @param c The characters to check for.<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the specified string is not &lt;jk&gt;null&lt;/jk&gt; and ends with the specified character.<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    */<a name="line.750"></a>
+<span class="sourceLineNo">751</span>   public static boolean endsWith(String s, char...c) {<a name="line.751"></a>
+<span class="sourceLineNo">752</span>      if (s != null) {<a name="line.752"></a>
+<span class="sourceLineNo">753</span>         int i = s.length();<a name="line.753"></a>
+<span class="sourceLineNo">754</span>         if (i &gt; 0) {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>            char c2 = s.charAt(i-1);<a name="line.755"></a>
+<span class="sourceLineNo">756</span>            for (char cc : c)<a name="line.756"></a>
+<span class="sourceLineNo">757</span>               if (c2 == cc)<a name="line.757"></a>
+<span class="sourceLineNo">758</span>                  return true;<a name="line.758"></a>
+<span class="sourceLineNo">759</span>         }<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      }<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      return false;<a name="line.761"></a>
+<span class="sourceLineNo">762</span>   }<a name="line.762"></a>
+<span class="sourceLineNo">763</span><a name="line.763"></a>
+<span class="sourceLineNo">764</span>   /**<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    * Converts the specified number into a 4 hexadecimal characters.<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    *<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    * @param num The number to convert to hex.<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    * @return A &lt;code&gt;&lt;jk&gt;char&lt;/jk&gt;[4]&lt;/code&gt; containing the specified characters.<a name="line.768"></a>
 <span class="sourceLineNo">769</span>    */<a name="line.769"></a>
-<span class="sourceLineNo">770</span>   public static boolean isEquals(String s1, String s2) {<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      if (s1 == null)<a name="line.771"></a>
-<span class="sourceLineNo">772</span>         return s2 == null;<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      if (s2 == null)<a name="line.773"></a>
-<span class="sourceLineNo">774</span>         return false;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      return s1.equals(s2);<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   }<a name="line.776"></a>
-<span class="sourceLineNo">777</span><a name="line.777"></a>
-<span class="sourceLineNo">778</span>   /**<a name="line.778"></a>
-<span class="sourceLineNo">779</span>    * Shortcut for calling &lt;code&gt;base64Encode(in.getBytes(&lt;js&gt;"UTF-8"&lt;/js&gt;))&lt;/code&gt;<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    *<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    * @param in The input string to convert.<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    * @return The string converted to BASE-64 encoding.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    */<a name="line.783"></a>
-<span class="sourceLineNo">784</span>   public static String base64EncodeToString(String in) {<a name="line.784"></a>
-<span class="sourceLineNo">785</span>      if (in == null)<a name="line.785"></a>
-<span class="sourceLineNo">786</span>         return null;<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      return base64Encode(in.getBytes(IOUtils.UTF8));<a name="line.787"></a>
-<span class="sourceLineNo">788</span>   }<a name="line.788"></a>
-<span class="sourceLineNo">789</span><a name="line.789"></a>
-<span class="sourceLineNo">790</span>   /**<a name="line.790"></a>
-<span class="sourceLineNo">791</span>    * BASE64-encodes the specified byte array.<a name="line.791"></a>
-<span class="sourceLineNo">792</span>    *<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    * @param in The input byte array to convert.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    * @return The byte array converted to a BASE-64 encoded string.<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    */<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   public static String base64Encode(byte[] in) {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      int outLength = (in.length * 4 + 2) / 3;   // Output length without padding<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      char[] out = new char[((in.length + 2) / 3) * 4];  // Length includes padding.<a name="line.798"></a>
-<span class="sourceLineNo">799</span>      int iIn = 0;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      int iOut = 0;<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      while (iIn &lt; in.length) {<a name="line.801"></a>
-<span class="sourceLineNo">802</span>         int i0 = in[iIn++] &amp; 0xff;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>         int i1 = iIn &lt; in.length ? in[iIn++] &amp; 0xff : 0;<a name="line.803"></a>
-<span class="sourceLineNo">804</span>         int i2 = iIn &lt; in.length ? in[iIn++] &amp; 0xff : 0;<a name="line.804"></a>
-<span class="sourceLineNo">805</span>         int o0 = i0 &gt;&gt;&gt; 2;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>         int o1 = ((i0 &amp; 3) &lt;&lt; 4) | (i1 &gt;&gt;&gt; 4);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>         int o2 = ((i1 &amp; 0xf) &lt;&lt; 2) | (i2 &gt;&gt;&gt; 6);<a name="line.807"></a>
-<span class="sourceLineNo">808</span>         int o3 = i2 &amp; 0x3F;<a name="line.808"></a>
-<span class="sourceLineNo">809</span>         out[iOut++] = base64m1[o0];<a name="line.809"></a>
-<span class="sourceLineNo">810</span>         out[iOut++] = base64m1[o1];<a name="line.810"></a>
-<span class="sourceLineNo">811</span>         out[iOut] = iOut &lt; outLength ? base64m1[o2] : '=';<a name="line.811"></a>
-<span class="sourceLineNo">812</span>         iOut++;<a name="line.812"></a>
-<span class="sourceLineNo">813</span>         out[iOut] = iOut &lt; outLength ? base64m1[o3] : '=';<a name="line.813"></a>
-<span class="sourceLineNo">814</span>         iOut++;<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      }<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      return new String(out);<a name="line.816"></a>
-<span class="sourceLineNo">817</span>   }<a name="line.817"></a>
-<span class="sourceLineNo">818</span><a name="line.818"></a>
-<span class="sourceLineNo">819</span>   /**<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    * Shortcut for calling &lt;code&gt;base64Decode(String)&lt;/code&gt; and converting the<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    *    result to a UTF-8 encoded string.<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    *<a name="line.822"></a>
-<span class="sourceLineNo">823</span>    * @param in The BASE-64 encoded string to decode.<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    * @return The decoded string.<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    */<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   public static String base64DecodeToString(String in) {<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      byte[] b = base64Decode(in);<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      if (b == null)<a name="line.828"></a>
-<span class="sourceLineNo">829</span>         return null;<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      return new String(b, IOUtils.UTF8);<a name="line.830"></a>
-<span class="sourceLineNo">831</span>   }<a name="line.831"></a>
-<span class="sourceLineNo">832</span><a name="line.832"></a>
-<span class="sourceLineNo">833</span>   /**<a name="line.833"></a>
-<span class="sourceLineNo">834</span>    * BASE64-decodes the specified string.<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    *<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    * @param in The BASE-64 encoded string.<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    * @return The decoded byte array.<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    */<a name="line.838"></a>
-<span class="sourceLineNo">839</span>   public static byte[] base64Decode(String in) {<a name="line.839"></a>
-<span class="sourceLineNo">840</span>      if (in == null)<a name="line.840"></a>
-<span class="sourceLineNo">841</span>         return null;<a name="line.841"></a>
-<span class="sourceLineNo">842</span><a name="line.842"></a>
-<span class="sourceLineNo">843</span>      byte bIn[] = in.getBytes(IOUtils.UTF8);<a name="line.843"></a>
-<span class="sourceLineNo">844</span><a name="line.844"></a>
-<span class="sourceLineNo">845</span>      if (bIn.length % 4 != 0)<a name="line.845"></a>
-<span class="sourceLineNo">846</span>         illegalArg("Invalid BASE64 string length.  Must be multiple of 4.");<a name="line.846"></a>
-<span class="sourceLineNo">847</span><a name="line.847"></a>
-<span class="sourceLineNo">848</span>      // Strip out any trailing '=' filler characters.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>      int inLength = bIn.length;<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      while (inLength &gt; 0 &amp;&amp; bIn[inLength - 1] == '=')<a name="line.850"></a>
-<span class="sourceLineNo">851</span>         inLength--;<a name="line.851"></a>
+<span class="sourceLineNo">770</span>   public static final char[] toHex(int num) {<a name="line.770"></a>
+<span class="sourceLineNo">771</span>      char[] n = new char[4];<a name="line.771"></a>
+<span class="sourceLineNo">772</span>      int a = num%16;<a name="line.772"></a>
+<span class="sourceLineNo">773</span>      n[3] = (char)(a &gt; 9 ? 'A'+a-10 : '0'+a);<a name="line.773"></a>
+<span class="sourceLineNo">774</span>      int base = 16;<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      for (int i = 1; i &lt; 4; i++) {<a name="line.775"></a>
+<span class="sourceLineNo">776</span>         a = (num/base)%16;<a name="line.776"></a>
+<span class="sourceLineNo">777</span>         base &lt;&lt;= 4;<a name="line.777"></a>
+<span class="sourceLineNo">778</span>         n[3-i] = (char)(a &gt; 9 ? 'A'+a-10 : '0'+a);<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      }<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      return n;<a name="line.780"></a>
+<span class="sourceLineNo">781</span>   }<a name="line.781"></a>
+<span class="sourceLineNo">782</span><a name="line.782"></a>
+<span class="sourceLineNo">783</span>   /**<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    * Tests two strings for equality, but gracefully handles nulls.<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    *<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    * @param s1 String 1.<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    * @param s2 String 2.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the strings are equal.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    */<a name="line.789"></a>
+<span class="sourceLineNo">790</span>   public static boolean isEquals(String s1, String s2) {<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      if (s1 == null)<a name="line.791"></a>
+<span class="sourceLineNo">792</span>         return s2 == null;<a name="line.792"></a>
+<span class="sourceLineNo">793</span>      if (s2 == null)<a name="line.793"></a>
+<span class="sourceLineNo">794</span>         return false;<a name="line.794"></a>
+<span class="sourceLineNo">795</span>      return s1.equals(s2);<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">798</span>   /**<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    * Shortcut for calling &lt;code&gt;base64Encode(in.getBytes(&lt;js&gt;"UTF-8"&lt;/js&gt;))&lt;/code&gt;<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    *<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    * @param in The input string to convert.<a name="line.801"></a>
+<span class="sourceLineNo">802</span>    * @return The string converted to BASE-64 encoding.<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    */<a name="line.803"></a>
+<span class="sourceLineNo">804</span>   public static String base64EncodeToString(String in) {<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      if (in == null)<a name="line.805"></a>
+<span class="sourceLineNo">806</span>         return null;<a name="line.806"></a>
+<span class="sourceLineNo">807</span>      return base64Encode(in.getBytes(IOUtils.UTF8));<a name="line.807"></a>
+<span class="sourceLineNo">808</span>   }<a name="line.808"></a>
+<span class="sourceLineNo">809</span><a name="line.809"></a>
+<span class="sourceLineNo">810</span>   /**<a name="line.810"></a>
+<span class="sourceLineNo">811</span>    * BASE64-encodes the specified byte array.<a name="line.811"></a>
+<span class="sourceLineNo">812</span>    *<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    * @param in The input byte array to convert.<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    * @return The byte array converted to a BASE-64 encoded string.<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    */<a name="line.815"></a>
+<span class="sourceLineNo">816</span>   public static String base64Encode(byte[] in) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>      int outLength = (in.length * 4 + 2) / 3;   // Output length without padding<a name="line.817"></a>
+<span class="sourceLineNo">818</span>      char[] out = new char[((in.length + 2) / 3) * 4];  // Length includes padding.<a name="line.818"></a>
+<span class="sourceLineNo">819</span>      int iIn = 0;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      int iOut = 0;<a name="line.820"></a>
+<span class="sourceLineNo">821</span>      while (iIn &lt; in.length) {<a name="line.821"></a>
+<span class="sourceLineNo">822</span>         int i0 = in[iIn++] &amp; 0xff;<a name="line.822"></a>
+<span class="sourceLineNo">823</span>         int i1 = iIn &lt; in.length ? in[iIn++] &amp; 0xff : 0;<a name="line.823"></a>
+<span class="sourceLineNo">824</span>         int i2 = iIn &lt; in.length ? in[iIn++] &amp; 0xff : 0;<a name="line.824"></a>
+<span class="sourceLineNo">825</span>         int o0 = i0 &gt;&gt;&gt; 2;<a name="line.825"></a>
+<span class="sourceLineNo">826</span>         int o1 = ((i0 &amp; 3) &lt;&lt; 4) | (i1 &gt;&gt;&gt; 4);<a name="line.826"></a>
+<span class="sourceLineNo">827</span>         int o2 = ((i1 &amp; 0xf) &lt;&lt; 2) | (i2 &gt;&gt;&gt; 6);<a name="line.827"></a>
+<span class="sourceLineNo">828</span>         int o3 = i2 &amp; 0x3F;<a name="line.828"></a>
+<span class="sourceLineNo">829</span>         out[iOut++] = base64m1[o0];<a name="line.829"></a>
+<span class="sourceLineNo">830</span>         out[iOut++] = base64m1[o1];<a name="line.830"></a>
+<span class="sourceLineNo">831</span>         out[iOut] = iOut &lt; outLength ? base64m1[o2] : '=';<a name="line.831"></a>
+<span class="sourceLineNo">832</span>         iOut++;<a name="line.832"></a>
+<span class="sourceLineNo">833</span>         out[iOut] = iOut &lt; outLength ? base64m1[o3] : '=';<a name="line.833"></a>
+<span class="sourceLineNo">834</span>         iOut++;<a name="line.834"></a>
+<span class="sourceLineNo">835</span>      }<a name="line.835"></a>
+<span class="sourceLineNo">836</span>      return new String(out);<a name="line.836"></a>
+<span class="sourceLineNo">837</span>   }<a name="line.837"></a>
+<span class="sourceLineNo">838</span><a name="line.838"></a>
+<span class="sourceLineNo">839</span>   /**<a name="line.839"></a>
+<span class="sourceLineNo">840</span>    * Shortcut for calling &lt;code&gt;base64Decode(String)&lt;/code&gt; and converting the<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    *    result to a UTF-8 encoded string.<a name="line.841"></a>
+<span class="sourceLineNo">842</span>    *<a name="line.842"></a>
+<span class="sourceLineNo">843</span>    * @param in The BASE-64 encoded string to decode.<a name="line.843"></a>
+<span class="sourceLineNo">844</span>    * @return The decoded string.<a name="line.844"></a>
+<span class="sourceLineNo">845</span>    */<a name="line.845"></a>
+<span class="sourceLineNo">846</span>   public static String base64DecodeToString(String in) {<a name="line.846"></a>
+<span class="sourceLineNo">847</span>      byte[] b = base64Decode(in);<a name="line.847"></a>
+<span class="sourceLineNo">848</span>      if (b == null)<a name="line.848"></a>
+<span class="sourceLineNo">849</span>         return null;<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      return new String(b, IOUtils.UTF8);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>   }<a name="line.851"></a>
 <span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>      int outLength = (inLength * 3) / 4;<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      byte[] out = new byte[outLength];<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      int iIn = 0;<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      int iOut = 0;<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      while (iIn &lt; inLength) {<a name="line.857"></a>
-<span class="sourceLineNo">858</span>         int i0 = bIn[iIn++];<a name="line.858"></a>
-<span class="sourceLineNo">859</span>         int i1 = bIn[iIn++];<a name="line.859"></a>
-<span class="sourceLineNo">860</span>         int i2 = iIn &lt; inLength ? bIn[iIn++] : 'A';<a name="line.860"></a>
-<span class="sourceLineNo">861</span>         int i3 = iIn &lt; inLength ? bIn[iIn++] : 'A';<a name="line.861"></a>
-<span class="sourceLineNo">862</span>         int b0 = base64m2[i0];<a name="line.862"></a>
-<span class="sourceLineNo">863</span>         int b1 = base64m2[i1];<a name="line.863"></a>
-<span class="sourceLineNo">864</span>         int b2 = base64m2[i2];<a name="line.864"></a>
-<span class="sourceLineNo">865</span>         int b3 = base64m2[i3];<a name="line.865"></a>
-<span class="sourceLineNo">866</span>         int o0 = (b0 &lt;&lt; 2) | (b1 &gt;&gt;&gt; 4);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>         int o1 = ((b1 &amp; 0xf) &lt;&lt; 4) | (b2 &gt;&gt;&gt; 2);<a name="line.867"></a>
-<span class="sourceLineNo">868</span>         int o2 = ((b2 &amp; 3) &lt;&lt; 6) | b3;<a name="line.868"></a>
-<span class="sourceLineNo">869</span>         out[iOut++] = (byte)o0;<a name="line.869"></a>
-<span class="sourceLineNo">870</span>         if (iOut &lt; outLength)<a name="line.870"></a>
-<span class="sourceLineNo">871</span>            out[iOut++] = (byte)o1;<a name="line.871"></a>
-<span class="sourceLineNo">872</span>         if (iOut &lt; outLength)<a name="line.872"></a>
-<span class="sourceLineNo">873</span>            out[iOut++] = (byte)o2;<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      }<a name="line.874"></a>
-<span class="sourceLineNo">875</span>      return out;<a name="line.875"></a>
-<span class="sourceLineNo">876</span>   }<a name="line.876"></a>
-<span class="sourceLineNo">877</span><a name="line.877"></a>
-<span class="sourceLineNo">878</span>   /**<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    * Generated a random UUID with the specified number of characters.<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    * Characters are composed of lower-case ASCII letters and numbers only.<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    * This method conforms to the restrictions for hostnames as specified in &lt;a class="doclink" href="https://tools.ietf.org/html/rfc952"&gt;RFC 952&lt;/a&gt;<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    * Since each character has 36 possible values, the square approximation formula for<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    *    the number of generated IDs that would produce a 50% chance of collision is:<a name="line.883"></a>
-<span class="sourceLineNo">884</span>    * &lt;code&gt;sqrt(36^N)&lt;/code&gt;.<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    * Dividing this number by 10 gives you an approximation of the number of generated IDs<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    *    needed to produce a &amp;lt;1% chance of collision.<a name="line.886"></a>
-<span class="sourceLineNo">887</span>    * For example, given 5 characters, the number of generated IDs need to produce a &amp;lt;1% chance of<a name="line.887"></a>
-<span class="sourceLineNo">888</span>    *    collision would be:<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    * &lt;code&gt;sqrt(36^5)/10=777&lt;/code&gt;<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    *<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    * @param numchars The number of characters in the generated UUID.<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    * @return A new random UUID.<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    */<a name="line.893"></a>
-<span class="sourceLineNo">894</span>   public static String generateUUID(int numchars) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      Random r = new Random();<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      StringBuilder sb = new StringBuilder(numchars);<a name="line.896"></a>
-<span class="sourceLineNo">897</span>      for (int i = 0; i &lt; numchars; i++) {<a name="line.897"></a>
-<span class="sourceLineNo">898</span>         int c = r.nextInt(36) + 97;<a name="line.898"></a>
-<span class="sourceLineNo">899</span>         if (c &gt; 'z')<a name="line.899"></a>
-<span class="sourceLineNo">900</span>            c -= ('z'-'0'+1);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>         sb.append((char)c);<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      }<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      return sb.toString();<a name="line.903"></a>
-<span class="sourceLineNo">904</span>   }<a name="line.904"></a>
-<span class="sourceLineNo">905</span><a name="line.905"></a>
-<span class="sourceLineNo">906</span>   /**<a name="line.906"></a>
-<span class="sourceLineNo">907</span>    * Same as {@link String#trim()} but prevents &lt;code&gt;NullPointerExceptions&lt;/code&gt;.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    *<a name="line.908"></a>
-<span class="sourceLineNo">909</span>    * @param s The string to trim.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>    * @return The trimmed string, or &lt;jk&gt;null&lt;/jk&gt; if the string was &lt;jk&gt;null&lt;/jk&gt;.<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>   public static String trim(String s) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      if (s == null)<a name="line.913"></a>
-<span class="sourceLineNo">914</span>         return null;<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      return s.trim();<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>   /**<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    * Parses an ISO8601 string into a date.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    *<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    * @param date The date string.<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    * @return The parsed date.<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    * @throws IllegalArgumentException<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    */<a name="line.924"></a>
-<span class="sourceLineNo">925</span>   @SuppressWarnings("nls")<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   public static Date parseISO8601Date(String date) throws IllegalArgumentException {<a name="line.926"></a>
-<span class="sourceLineNo">927</span>      if (isEmpty(date))<a name="line.927"></a>
-<span class="sourceLineNo">928</span>         return null;<a name="line.928"></a>
-<span class="sourceLineNo">929</span>      date = date.trim().replace(' ', 'T');  // Convert to 'standard' ISO8601<a name="line.929"></a>
-<span class="sourceLineNo">930</span>      if (date.indexOf(',') != -1)  // Trim milliseconds<a name="line.930"></a>
-<span class="sourceLineNo">931</span>         date = date.substring(0, date.indexOf(','));<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      if (date.matches("\\d{4}"))<a name="line.932"></a>
-<span class="sourceLineNo">933</span>         date += "-01-01T00:00:00";<a name="line.933"></a>
-<span class="sourceLineNo">934</span>      else if (date.matches("\\d{4}\\-\\d{2}"))<a name="line.934"></a>
-<span class="sourceLineNo">935</span>         date += "-01T00:00:00";<a name="line.935"></a>
-<span class="sourceLineNo">936</span>      else if (date.matches("\\d{4}\\-\\d{2}\\-\\d{2}"))<a name="line.936"></a>
-<span class="sourceLineNo">937</span>         date += "T00:00:00";<a name="line.937"></a>
-<span class="sourceLineNo">938</span>      else if (date.matches("\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}"))<a name="line.938"></a>
-<span class="sourceLineNo">939</span>         date += ":00:00";<a name="line.939"></a>
-<span class="sourceLineNo">940</span>      else if (date.matches("\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}\\:\\d{2}"))<a name="line.940"></a>
-<span class="sourceLineNo">941</span>         date += ":00";<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      return DatatypeConverter.parseDateTime(date).getTime();<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>    * Simple utility for replacing variables of the form &lt;js&gt;"{key}"&lt;/js&gt; with values<a name="line.946"></a>
-<span class="sourceLineNo">947</span>    *    in the specified map.<a name="line.947"></a>
-<span class="sourceLineNo">948</span>    * &lt;p&gt;<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    * Nested variables are supported in both the input string and map values.<a name="line.949"></a>
-<span class="sourceLineNo">950</span>    * &lt;p&gt;<a name="line.950"></a>
-<span class="sourceLineNo">951</span>    * If the map does not contain the specified value, the variable is not replaced.<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    * &lt;p&gt;<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    * &lt;jk&gt;null&lt;/jk&gt; values in the map are treated as blank strings.<a name="line.953"></a>
-<span class="sourceLineNo">954</span>    *<a name="line.954"></a>
-<span class="sourceLineNo">955</span>    * @param s The string containing variables to replace.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>    * @param m The map containing the variable values.<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    * @return The new string with variables replaced, or the original string if it didn't have variables in it.<a name="line.957"></a>
-<span class="sourceLineNo">958</span>    */<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   public static String replaceVars(String s, Map&lt;String,Object&gt; m) {<a name="line.959"></a>
-<span class="sourceLineNo">960</span><a name="line.960"></a>
-<span class="sourceLineNo">961</span>      if (s.indexOf('{') == -1)<a name="line.961"></a>
-<span class="sourceLineNo">962</span>         return s;<a name="line.962"></a>
-<span class="sourceLineNo">963</span><a name="line.963"></a>
-<span class="sourceLineNo">964</span>      int S1 = 1;    // Not in variable, looking for {<a name="line.964"></a>
-<span class="sourceLineNo">965</span>      int S2 = 2;    // Found {, Looking for }<a name="line.965"></a>
-<span class="sourceLineNo">966</span><a name="line.966"></a>
-<span class="sourceLineNo">967</span>      int state = S1;<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      boolean hasInternalVar = false;<a name="line.968"></a>
-<span class="sourceLineNo">969</span>      int x = 0;<a name="line.969"></a>
-<span class="sourceLineNo">970</span>      int depth = 0;<a name="line.970"></a>
-<span class="sourceLineNo">971</span>      int length = s.length();<a name="line.971"></a>
-<span class="sourceLineNo">972</span>      StringBuilder out = new StringBuilder();<a name="line.972"></a>
-<span class="sourceLineNo">973</span>      for (int i = 0; i &lt; length; i++) {<a name="line.973"></a>
-<span class="sourceLineNo">974</span>         char c = s.charAt(i);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>         if (state == S1) {<a name="line.975"></a>
-<span class="sourceLineNo">976</span>            if (c == '{') {<a name="line.976"></a>
-<span class="sourceLineNo">977</span>               state = S2;<a name="line.977"></a>
-<span class="sourceLineNo">978</span>               x = i;<a name="line.978"></a>
-<span class="sourceLineNo">979</span>            } else {<a name="line.979"></a>
-<span class="sourceLineNo">980</span>               out.append(c);<a name="line.980"></a>
-<span class="sourceLineNo">981</span>            }<a name="line.981"></a>
-<span class="sourceLineNo">982</span>         } else /* state == S2 */ {<a name="line.982"></a>
-<span class="sourceLineNo">983</span>            if (c == '{') {<a name="line.983"></a>
-<span class="sourceLineNo">984</span>               depth++;<a name="line.984"></a>
-<span class="sourceLineNo">985</span>               hasInternalVar = true;<a name="line.985"></a>
-<span class="sourceLineNo">986</span>            } else if (c == '}') {<a name="line.986"></a>
-<span class="sourceLineNo">987</span>               if (depth &gt; 0) {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>                  depth--;<a name="line.988"></a>
-<span class="sourceLineNo">989</span>               } else {<a name="line.989"></a>
-<span class="sourceLineNo">990</span>                  String key = s.substring(x+1, i);<a name="line.990"></a>
-<span class="sourceLineNo">991</span>                  key = (hasInternalVar ? replaceVars(key, m) : key);<a name="line.991"></a>
-<span class="sourceLineNo">992</span>                  hasInternalVar = false;<a name="line.992"></a>
-<span class="sourceLineNo">993</span>                  if (! m.containsKey(key))<a name="line.993"></a>
-<span class="sourceLineNo">994</span>                     out.append('{').append(key).append('}');<a name="line.994"></a>
-<span class="sourceLineNo">995</span>                  else {<a name="line.995"></a>
-<span class="sourceLineNo">996</span>                     Object val = m.get(key);<a name="line.996"></a>
-<span class="sourceLineNo">997</span>                     if (val == null)<a name="line.997"></a>
-<span class="sourceLineNo">998</span>                        val = "";<a name="line.998"></a>
-<span class="sourceLineNo">999</span>                     String v = val.toString();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>                     // If the replacement also contains variables, replace them now.<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>                     if (v.indexOf('{') != -1)<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>                        v = replaceVars(v, m);<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>                     out.append(v);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>                  }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>                  state = 1;<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>               }<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>      }<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>      return out.toString();<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>   }<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span><a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>   /**<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified path string is prefixed with the specified prefix.<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    *<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>    * &lt;p class='bcode'&gt;<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>    *    pathStartsWith(&lt;js&gt;"foo"&lt;/js&gt;, &lt;js&gt;"foo"&lt;/js&gt;);  &lt;jc&gt;// true&lt;/jc&gt;<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>    *    pathStartsWith(&lt;js&gt;"foo/bar"&lt;/js&gt;, &lt;js&gt;"foo"&lt;/js&gt;);  &lt;jc&gt;// true&lt;/jc&gt;<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>    *    pathStartsWith(&lt;js&gt;"foo2"&lt;/js&gt;, &lt;js&gt;"foo"&lt;/js&gt;);  &lt;jc&gt;// false&lt;/jc&gt;<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>    *    pathStartsWith(&lt;js&gt;"foo2"&lt;/js&gt;, &lt;js&gt;""&lt;/js&gt;);  &lt;jc&gt;// false&lt;/jc&gt;<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>    * &lt;/p&gt;<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    *<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>    * @param path The path to check.<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    * @param pathPrefix The prefix.<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the specified path string is prefixed with the specified prefix.<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>    */<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>   public static boolean pathStartsWith(String path, String pathPrefix) {<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>      if (path == null || pathPrefix == null)<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>         return false;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>      if (path.startsWith(pathPrefix))<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>         return path.length() == pathPrefix.length() || path.charAt(pathPrefix.length()) == '/';<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>      return false;<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>   }<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span><a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>   /**<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>    * Same as {@link #pathStartsWith(String, String)} but returns &lt;jk&gt;true&lt;/jk&gt; if at least one prefix matches.<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    * &lt;p&gt;<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>    *<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>    * @param path The path to check.<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    * @param pathPrefixes The prefixes.<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the specified path string is prefixed with any of the specified prefixes.<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>    */<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>   public static boolean pathStartsWith(String path, String[] pathPrefixes) {<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>      for (String p : pathPrefixes)<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>         if (pathStartsWith(path, p))<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            return true;<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>      return false;<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>   }<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span><a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>   /**<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>    * Replaces &lt;js&gt;"\\uXXXX"&lt;/js&gt; character sequences with their unicode characters.<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    *<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    * @param s The string to replace unicode sequences in.<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>    * @return A string with unicode sequences replaced.<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>    */<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>   public static String replaceUnicodeSequences(String s) {<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      if (s.indexOf('\\') == -1)<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>         return s;<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      Pattern p = Pattern.compile("\\\\u(\\p{XDigit}{4})");<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>      Matcher m = p.matcher(s);<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>      StringBuffer sb = new StringBuffer(s.length());<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>      while (m.find()) {<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>         String ch = String.valueOf((char) Integer.parseInt(m.group(1), 16));<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>         m.appendReplacement(sb, Matcher.quoteReplacement(ch));<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>      }<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>      m.appendTail(sb);<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>      return sb.toString();<a name="line.1068"></a>
+<span class="sourceLineNo">853</span>   /**<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    * BASE64-decodes the specified string.<a name="line.854"></a>
+<span class="sourceLineNo">855</span>    *<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    * @param in The BASE-64 encoded string.<a name="line.856"></a>
+<span class="sourceLineNo">857</span>    * @return The decoded byte array.<a name="line.857"></a>
+<span class="sourceLineNo">858</span>    */<a name="line.858"></a>
+<span class="sourceLineNo">859</span>   public static byte[] base64Decode(String in) {<a name="line.859"></a>
+<span class="sourceLineNo">860</span>      if (in == null)<a name="line.860"></a>
+<span class="sourceLineNo">861</span>         return null;<a name="line.861"></a>
+<span class="sourceLineNo">862</span><a name="line.862"></a>
+<span class="sourceLineNo">863</span>      byte bIn[] = in.getBytes(IOUtils.UTF8);<a name="line.863"></a>
+<span class="sourceLineNo">864</span><a name="line.864"></a>
+<span class="sourceLineNo">865</span>      if (bIn.length % 4 != 0)<a name="line.865"></a>
+<span class="sourceLineNo">866</span>         illegalArg("Invalid BASE64 string length.  Must be multiple of 4.");<a name="line.866"></a>
+<span class="sourceLineNo">867</span><a name="line.867"></a>
+<span class="sourceLineNo">868</span>      // Strip out any trailing '=' filler characters.<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      int inLength = bIn.length;<a name="line.869"></a>
+<span class="sourceLineNo">870</span>      while (inLength &gt; 0 &amp;&amp; bIn[inLength - 1] == '=')<a name="line.870"></a>
+<span class="sourceLineNo">871</span>         inLength--;<a name="line.871"></a>
+<span class="sourceLineNo">872</span><a name="line.872"></a>
+<span class="sourceLineNo">873</span>      int outLength = (inLength * 3) / 4;<a name="line.873"></a>
+<span class="sourceLineNo">874</span>      byte[] out = new byte[outLength];<a name="line.874"></a>
+<span class="sourceLineNo">875</span>      int iIn = 0;<a name="line.875"></a>
+<span class="sourceLineNo">876</span>      int iOut = 0;<a name="line.876"></a>
+<span class="sourceLineNo">877</span>      while (iIn &lt; inLength) {<a name="line.877"></a>
+<span class="sourceLineNo">878</span>         int i0 = bIn[iIn++];<a name="line.878"></a>
+<span class="sourceLineNo">879</span>         int i1 = bIn[iIn++];<a name="line.879"></a>
+<span class="sourceLineNo">880</span>         int i2 = iIn &lt; inLength ? bIn[iIn++] : 'A';<a name="line.880"></a>
+<span class="sourceLineNo">881</span>         int i3 = iIn &lt; inLength ? bIn[iIn++] : 'A';<a name="line.881"></a>
+<span class="sourceLineNo">882</span>         int b0 = base64m2[i0];<a name="line.882"></a>
+<span class="sourceLineNo">883</span>         int b1 = base64m2[i1];<a name="line.883"></a>
+<span class="sourceLineNo">884</span>         int b2 = base64m2[i2];<a name="line.884"></a>
+<span class="sourceLineNo">885</span>         int b3 = base64m2[i3];<a name="line.885"></a>
+<span class="sourceLineNo">886</span>         int o0 = (b0 &lt;&lt; 2) | (b1 &gt;&gt;&gt; 4);<a name="line.886"></a>
+<span class="sourceLineNo">887</span>         int o1 = ((b1 &amp; 0xf) &lt;&lt; 4) | (b2 &gt;&gt;&gt; 2);<a name="line.887"></a>
+<span class="sourceLineNo">888</span>         int o2 = ((b2 &amp; 3) &lt;&lt; 6) | b3;<a name="line.888"></a>
+<span class="sourceLineNo">889</span>         out[iOut++] = (byte)o0;<a name="line.889"></a>
+<span class="sourceLineNo">890</span>         if (iOut &lt; outLength)<a name="line.890"></a>
+<span class="sourceLineNo">891</span>            out[iOut++] = (byte)o1;<a name="line.891"></a>
+<span class="sourceLineNo">892</span>         if (iOut &lt; outLength)<a name="line.892"></a>
+<span class="sourceLineNo">893</span>            out[iOut++] = (byte)o2;<a name="line.893"></a>
+<span class="sourceLineNo">894</span>      }<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      return out;<a name="line.895"></a>
+<span class="sourceLineNo">896</span>   }<a name="line.896"></a>
+<span class="sourceLineNo">897</span><a name="line.897"></a>
+<span class="sourceLineNo">898</span>   /**<a name="line.898"></a>
+<span class="sourceLineNo">899</span>    * Generated a random UUID with the specified number of characters.<a name="line.899"></a>
+<span class="sourceLineNo">900</span>    * Characters are composed of lower-case ASCII letters and numbers only.<a name="line.900"></a>
+<span class="sourceLineNo">901</span>    * This method conforms to the restrictions for hostnames as specified in &lt;a class="doclink" href="https://tools.ietf.org/html/rfc952"&gt;RFC 952&lt;/a&gt;<a name="line.901"></a>
+<span class="sourceLineNo">902</span>    * Since each character has 36 possible values, the square approximation formula for<a name="line.902"></a>
+<span class="sourceLineNo">903</span>    *    the number of generated IDs that would produce a 50% chance of collision is:<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    * &lt;code&gt;sqrt(36^N)&lt;/code&gt;.<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    * Dividing this number by 10 gives you an approximation of the number of generated IDs<a name="line.905"></a>
+<span class="sourceLineNo">906</span>    *    needed to produce a &amp;lt;1% chance of collision.<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    * For example, given 5 characters, the number of generated IDs need to produce a &amp;lt;1% chance of<a name="line.907"></a>
+<span class="sourceLineNo">908</span>    *    collision would be:<a name="line.908"></a>
+<span class="sourceLineNo">909</span>    * &lt;code&gt;sqrt(36^5)/10=777&lt;/code&gt;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    *<a name="line.910"></a>
+<span class="sourceLineNo">911</span>    * @param numchars The number of characters in the generated UUID.<a name="line.911"></a>
+<span class="sourceLineNo">912</span>    * @return A new random UUID.<a name="line.912"></a>
+<span class="sourceLineNo">913</span>    */<a name="line.913"></a>
+<span class="sourceLineNo">914</span>   public static String generateUUID(int numchars) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>      Random r = new Random();<a name="line.915"></a>
+<span class="sourceLineNo">916</span>      StringBuilder sb = new StringBuilder(numchars);<a name="line.916"></a>
+<span class="sourceLineNo">917</span>      for (int i = 0; i &lt; numchars; i++) {<a name="line.917"></a>
+<span class="sourceLineNo">918</span>         int c = r.nextInt(36) + 97;<a name="line.918"></a>
+<span class="sourceLineNo">919</span>         if (c &gt; 'z')<a name="line.919"></a>
+<span class="sourceLineNo">920</span>            c -= ('z'-'0'+1);<a name="line.920"></a>
+<span class="sourceLineNo">921</span>         sb.append((char)c);<a name="line.921"></a>
+<span class="sourceLineNo">922</span>      }<a name="line.922"></a>
+<span class="sourceLineNo">923</span>      return sb.toString();<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>    * Same as {@link String#trim()} but prevents &lt;code&gt;NullPointerExceptions&lt;/code&gt;.<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    *<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    * @param s The string to trim.<a name="line.929"></a>
+<span class="sourceLineNo">930</span>    * @return The trimmed string, or &lt;jk&gt;null&lt;/jk&gt; if the string was &lt;jk&gt;null&lt;/jk&gt;.<a name="line.930"></a>
+<span class="sourceLineNo">931</span>    */<a name="line.931"></a>
+<span class="sourceLineNo">932</span>   public static String trim(String s) {<a name="line.932"></a>
+<span class="sourceLineNo">933</span>      if (s == null)<a name="line.933"></a>
+<span class="sourceLineNo">934</span>         return null;<a name="line.934"></a>
+<span class="sourceLineNo">935</span>      return s.trim();<a name="line.935"></a>
+<span class="sourceLineNo">936</span>   }<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>    * Parses an ISO8601 string into a date.<a name="line.939"></a>
+<span class="sourceLineNo">940</span>    *<a name="line.940"></a>
+<span class="sourceLineNo">941</span>    * @param date The date string.<a name="line.941"></a>
+<span class="sourceLineNo">942</span>    * @return The parsed date.<a name="line.942"></a>
+<span class="sourceLineNo">943</span>    * @throws IllegalArgumentException<a name="line.943"></a>
+<span class="sourceLineNo">944</span>    */<a name="line.944"></a>
+<span class="sourceLineNo">945</span>   @SuppressWarnings("nls")<a name="line.945"></a>
+<span class="sourceLineNo">946</span>   public static Date parseISO8601Date(String date) throws IllegalArgumentException {<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      if (isEmpty(date))<a name="line.947"></a>
+<span class="sourceLineNo">948</span>         return null;<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      date = date.trim().replace(' ', 'T');  // Convert to 'standard' ISO8601<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      if (date.indexOf(',') != -1)  // Trim milliseconds<a name="line.950"></a>
+<span class="sourceLineNo">951</span>         date = date.substring(0, date.indexOf(','));<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      if (date.matches("\\d{4}"))<a name="line.952"></a>
+<span class="sourceLineNo">953</span>         date += "-01-01T00:00:00";<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      else if (date.matches("\\d{4}\\-\\d{2}"))<a name="line.954"></a>
+<span class="sourceLineNo">955</span>         date += "-01T00:00:00";<a name="line.955"></a>
+<span class="sourceLineNo">956</span>      else if (date.matches("\\d{4}\\-\\d{2}\\-\\d{2}"))<a name="line.956"></a>
+<span class="sourceLineNo">957</span>         date += "T00:00:00";<a name="line.957"></a>
+<span class="sourceLineNo">958</span>      else if (date.matches("\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}"))<a name="line.958"></a>
+<span class="sourceLineNo">959</span>         date += ":00:00";<a name="line.959"></a>
+<span class="sourceLineNo">960</span>      else if (date.matches("\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}\\:\\d{2}"))<a name="line.960"></a>
+<span class="sourceLineNo">961</span>         date += ":00";<a name="line.961"></a>
+<span class="sourceLineNo">962</span>      return DatatypeConverter.parseDateTime(date).getTime();<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>    * Simple utility for replacing variables of the form &lt;js&gt;"{key}"&lt;/js&gt; with values<a name="line.966"></a>
+<span class="sourceLineNo">967</span>    *    in the specified map.<a name="line.967"></a>
+<span class="sourceLineNo">968</span>    * &lt;p&gt;<a name="line.968"></a>
+<span class="sourceLineNo">969</span>    * Nested variables are supported in both the input string and map values.<a name="line.969"></a>
+<span class="sourceLineNo">970</span>    * &lt;p&gt;<a name="line.970"></a>
+<span class="sourceLineNo">971</span>    * If the map does not contain the specified value, the variable is not replaced.<a name="line.971"></a>
+<span class="sourceLineNo">972</span>    * &lt;p&gt;<a name="line.972"></a>
+<span class="sourceLineNo">973</span>    * &lt;jk&gt;null&lt;/jk&gt; values in the map are treated as blank strings.<a name="line.973"></a>
+<span class="sourceLineNo">974</span>    *<a name="line.974"></a>
+<span class="sourceLineNo">975</span>    * @param s The string containing variables to replace.<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    * @param m The map containing the variable values.<a name="line.976"></a>
+<span class="sourceLineNo">977</span>    * @return The new string with variables replaced, or the original string if it didn't have variables in it.<a name="line.977"></a>
+<span class="sourceLineNo">978</span>    */<a name="line.978"></a>
+<span class="sourceLineNo">979</span>   public static String replaceVars(String s, Map&lt;String,Object&gt; m) {<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>      if (s.indexOf('{') == -1)<a name="line.981"></a>
+<span class="sourceLineNo">982</span>         return s;<a name="line.982"></a>
+<span class="sourceLineNo">983</span><a name="line.983"></a>
+<span class="sourceLineNo">984</span>      int S1 = 1;    // Not in variable, looking for {<a name="line.984"></a>
+<span class="sourceLineNo">985</span>      int S2 = 2;    // Found {, Looking for }<a name="line.985"></a>
+<span class="sourceLineNo">986</span><a name="line.986"></a>
+<span class="sourceLineNo">987</span>      int state = S1;<a name="line.987"></a>
+<span class="sourceLineNo">988</span>      boolean hasInternalVar = false;<a name="line.988"></a>
+<span class="sourceLineNo">989</span>      int x = 0;<a name="line.989"></a>
+<span class="sourceLineNo">990</span>      int depth = 0;<a name="line.990"></a>
+<span class="sourceLineNo">991</span>      int length = s.length();<a name="line.991"></a>
+<span class="sourceLineNo">992</span>      StringBuilder out = new StringBuilder();<a name="line.992"></a>
+<span class="sourceLineNo">993</span>      for (int i = 0; i &lt; length; i++) {<a name="line.993"></a>
+<span class="sourceLineNo">994</span>         char c = s.charAt(i);<a name="line.994"></a>
+<span class="sourceLineNo">995</span>         if (state == S1) {<a name="line.995"></a>
+<span class="sourceLineNo">996</span>            if (c == '{') {<a name="line.996"></a>
+<span class="sourceLineNo">997</span>               state = S2;<a name="line.997"></a>
+<span class="sourceLineNo">998</span>               x = i;<a name="line.998"></a>
+<span class="sourceLineNo">999</span>            } else {<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>               out.append(c);<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>            }<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>         } else /* state == S2 */ {<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>            if (c == '{') {<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>               depth++;<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>               hasInternalVar = true;<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>            } else if (c == '}') {<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>               if (depth &gt; 0) {<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>                  depth--;<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>               } else {<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>                  String key = s.substring(x+1, i);<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>                  key = (hasInternalVar ? replaceVars(key, m) : key);<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>                  hasInternalVar = false;<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>                  if (! m.containsKey(key))<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>                     out.append('{').append(key).append('}');<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>                  else {<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>                     Object val = m.get(key);<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>                     if (val == null)<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>                        val = "";<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>                     String v = val.toString();<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>                     // If the replacement also contains variables, replace them now.<a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>                     if (v.indexOf('{') != -1)<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>                        v = replaceVars(v, m);<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>                     out.append(v);<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>                  }<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>                  state = 1;<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>      }<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>      return out.toString();<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>   }<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span><a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>   /**<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified path string is prefixed with the specified prefix.<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>    *<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span>    * &lt;p class='bcode'&gt;<a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>    *    pathStartsWith(&lt;js&gt;"foo"&lt;/js&gt;, &lt;js&gt;"foo"&lt;/js&gt;);  &lt;jc&gt;// true&lt;/jc&gt;<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>    *    pathStartsWith(&lt;js&gt;"foo/bar"&lt;/js&gt;, &lt;js&gt;"foo"&lt;/js&gt;);  &lt;jc&gt;// true&lt;/jc&gt;<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>    *    pathStartsWith(&lt;js&gt;"foo2"&lt;/js&gt;, &lt;js&gt;"foo"&lt;/js&gt;);  &lt;jc&gt;// false&lt;/jc&gt;<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>    *    pathStartsWith(&lt;js&gt;"foo2"&lt;/js&gt;, &lt;js&gt;""&lt;/js&gt;);  &lt;jc&gt;// false&lt;/jc&gt;<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>    * &lt;/p&gt;<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>    *<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>    * @param path The path to check.<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>    * @param pathPrefix The prefix.<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the specified path string is prefixed with the specified prefix.<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>    */<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>   public static boolean pathStartsWith(String path, String pathPrefix) {<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      if (path == null || pathPrefix == null)<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>         return false;<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>      if (path.startsWith(pathPrefix))<a name="line.1051"></a>
+<span class="sourceLineNo">1052</span>         return path.length() == pathPrefix.length() || path.charAt(pathPrefix.length()) == '/';<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>      return false;<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>   }<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span><a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>   /**<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    * Same as {@link #pathStartsWith(String, String)} but returns &lt;jk&gt;true&lt;/jk&gt; if at least one prefix matches.<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    * &lt;p&gt;<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>    *<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>    * @param path The path to check.<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>    * @param pathPrefixes The prefixes.<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the specified path string is prefixed with any of the specified prefixes.<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>    */<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>   public static boolean pathStartsWith(String path, String[] pathPrefixes) {<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>      for (String p : pathPrefixes)<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>         if (pathStartsWith(path, p))<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>            return true;<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>      return false;<a name="line.1068"></a>
 <span class="sourceLineNo">1069</span>   }<a name="line.1069"></a>
 <span class="sourceLineNo">1070</span><a name="line.1070"></a>
 <span class="sourceLineNo">1071</span>   /**<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    * Returns the specified field in a delimited string without splitting the string.<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>    * &lt;p&gt;<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>    * Equivalent to the following:<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>    * &lt;p class='bcode'&gt;<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    *    String in = &lt;js&gt;"0,1,2"&lt;/js&gt;;<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>    *    String[] parts = in.split(&lt;js&gt;","&lt;/js&gt;);<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    *    String p1 = (parts.&lt;jk&gt;length&lt;/jk&gt; &gt; 1 ? parts[1] : &lt;js&gt;""&lt;/js&gt;);<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    *<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>    * @param fieldNum The field number.  Zero-indexed.<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>    * @param s The input string.<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    * @param delim The delimiter character.<a name="line.1082"></a>
-<span class="sourceLineNo">1083</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.1083"></a>
-<span class="sourceLineNo">1084</span>    */<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>   public static String getField(int fieldNum, String s, char delim) {<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>      return getField(fieldNum, s, delim, "");<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>   /**<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    * Same as {@link #getField(int, String, char)} except allows you to specify the default value.<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    *<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    * @param fieldNum The field number.  Zero-indexed.<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>    * @param s The input string.<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>    * @param delim The delimiter character.<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    * @param def The default value if the field does not exist.<a name="line.1095"></a>
-<span class="sourceLineNo">1096</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.1096"></a>
-<span class="sourceLineNo">1097</span>    */<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>   public static String getField(int fieldNum, String s, char delim, String def) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      if (s == null || fieldNum &lt; 0)<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>         return def;<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>      int start = 0;<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      for (int i = 0; i &lt; s.length(); i++) {<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>         char c = s.charAt(i);<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>         if (c == delim) {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>            fieldNum--;<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>            if (fieldNum == 0)<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>               start = i+1;<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>         }<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>         if (fieldNum &lt; 0)<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>            return s.substring(start, i);<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>      }<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>      if (start == 0)<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>         return def;<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>      return s.substring(start);<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>   }<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span><a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>   /**<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>    * Calls {@link #toString()} on the specified object if it's not null.<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>    *<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>    * @param o The object to convert to a string.<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>    * @return The object converted to a string, or &lt;jk&gt;null&lt;/jk&gt; if the object was null.<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>    */<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>   public static String toString(Object o) {<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>      return (o == null ? null : o.toString());<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>   }<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span><a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>   /**<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>    * Converts a hexadecimal byte stream (e.g. "34A5BC") into a UTF-8 encoded string.<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>    *<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    * @param hex The hexadecimal string.<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    * @return The UTF-8 string.<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>    */<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>   public static String fromHexToUTF8(String hex) {<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      ByteBuffer buff = ByteBuffer.allocate(hex.length()/2);<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>      for (int i = 0; i &lt; hex.length(); i+=2)<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>         buff.put((byte)Integer.parseInt(hex.substring(i, i+2), 16));<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      buff.rewind();<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      Charset cs = Charset.forName("UTF-8");<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>      return cs.decode(buff).toString();<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>   private final static char[] HEX = "0123456789ABCDEF".toCharArray();<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>    * Converts a byte array into a simple hexadecimal character string.<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>    *<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>    * @param bytes The bytes to convert to hexadecimal.<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>    * @return A new string consisting of hexadecimal characters.<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>    */<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>   public static String toHex(byte[] bytes) {<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>      StringBuilder sb = new StringBuilder(bytes.length * 2);<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>      for ( int j = 0; j &lt; bytes.length; j++ ) {<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>         int v = bytes[j] &amp; 0xFF;<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>         sb.append(HEX[v &gt;&gt;&gt; 4]).append(HEX[v &amp; 0x0F]);<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>      }<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>      return sb.toString();<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>   }<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span><a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>   /**<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>    * Converts a hexadecimal character string to a byte array.<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>    *<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>    * @param hex The string to convert to a byte array.<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>    * @return A new byte array.<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>    */<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>   public static byte[] fromHex(String hex) {<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>      ByteBuffer buff = ByteBuffer.allocate(hex.length()/2);<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>      for (int i = 0; i &lt; hex.length(); i+=2)<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>         buff.put((byte)Integer.parseInt(hex.substring(i, i+2), 16));<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>      buff.rewind();<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>      return buff.array();<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>    * Creates a repeated pattern.<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>    *<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>    * @param count The number of times to repeat the pattern.<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>    * @param pattern The pattern to repeat.<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>    * @return A new string consisting of the repeated pattern.<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>    */<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>   public static String repeat(int count, String pattern) {<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>      StringBuilder sb = new StringBuilder(pattern.length() * count);<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>      for (int i = 0; i &lt; count; i++)<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>         sb.append(pattern);<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>      return sb.toString();<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>   }<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span><a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>   /**<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>    * Trims whitespace characters from the beginning of the specified string.<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span>    *<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>    * @param s The string to trim.<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>    * @return The trimmed string, or &lt;jk&gt;null&lt;/jk&gt; if the string was &lt;jk&gt;null&lt;/jk&gt;.<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>    */<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>   public static String trimStart(String s) {<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>      if (s != null)<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>         while (s.length() &gt; 0 &amp;&amp; Character.isWhitespace(s.charAt(0)))<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>            s = s.substring(1);<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>      return s;<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>   }<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>    * Trims whitespace characters from the end of the specified string.<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>    *<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>    * @param s The string to trim.<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>    * @return The trimmed string, or &lt;jk&gt;null&lt;/jk&gt; if the string was &lt;jk&gt;null&lt;/jk&gt;.<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>    */<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span>   public static String trimEnd(String s) {<a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>      if (s != null)<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>         while (s.length() &gt; 0 &amp;&amp; Character.isWhitespace(s.charAt(s.length()-1)))<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>            s = s.substring(0, s.length()-1);<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>      return s;<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>   /**<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified string is one of the specified values.<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>    *<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    * @param s The string to test.<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    * Can be &lt;jk&gt;null&lt;/jk&gt;.<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>    * @param values The values to test.<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>    * Can contain &lt;jk&gt;null&lt;/jk&gt;.<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if the specified string is one of the specified values.<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>    */<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>   public static boolean isOneOf(String s, String...values) {<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>      for (int i = 0; i &lt; values.length; i++)<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>         if (StringUtils.isEquals(s, values[i]))<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>            return true;<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>      return false;<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>    * Trims &lt;js&gt;'/'&lt;/js&gt; characters from both the start and end of the specified string.<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    *<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>    * @param s The string to trim.<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>    * @return A new trimmed string, or the same string if no trimming was necessary.<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>    */<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>   public static String trimSlashes(String s) {<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>      if (s == null)<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>         return null;<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>      while (endsWith(s, '/'))<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>         s = s.substring(0, s.length()-1);<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>      while (s.length() &gt; 0 &amp;&amp; s.charAt(0) == '/')<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>         s = s.substring(1);<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>      return s;<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>   }<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span><a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>   /**<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>    * Trims &lt;js&gt;'/'&lt;/js&gt; characters from the end of the specified string.<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    *<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>    * @param s The string to trim.<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>    * @return A new trimmed string, or the same string if no trimming was necessary.<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>    */<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>   public static String trimTrailingSlashes(String s) {<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>      if (s == null)<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>         return null;<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      while (endsWith(s, '/'))<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>         s = s.substring(0, s.length()-1);<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>      return s;<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>   }<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span><a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>   /**<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>    * Trims &lt;js&gt;'/'&lt;/js&gt; characters from the end of the specified string.<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>    *<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>    * @param s The string to trim.<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>    * @return The same string buffer.<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>    */<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>   public static StringBuffer trimTrailingSlashes(StringBuffer s) {<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>      if (s == null)<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>         return null;<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>      while (s.length() &gt; 0 &amp;&amp; s.charAt(s.length()-1) == '/')<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>         s.setLength(s.length()-1);<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>      return s;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>   }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span><a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>   /**<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>    * Decodes a &lt;code&gt;application/x-www-form-urlencoded&lt;/code&gt; string using &lt;code&gt;UTF-8&lt;/code&gt; encoding scheme.<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    *<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>    * @param s The string to decode.<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>    * @return The decoded string, or &lt;jk&gt;null&lt;/jk&gt; if input is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>    */<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>   public static String urlDecode(String s) {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>      if (s == null)<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>         return s;<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>      boolean needsDecode = false;<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>      for (int i = 0; i &lt; s.length() &amp;&amp; ! needsDecode; i++) {<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>         char c = s.charAt(i);<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>         if (c == '+' || c == '%')<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>            needsDecode = true;<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>      }<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>      if (needsDecode)<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>      try {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>            return URLDecoder.decode(s, "UTF-8");<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>         } catch (UnsupportedEncodingException e) {/* Won't happen */}<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>      return s;<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>   }<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span><a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>   /**<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>    * Encodes a &lt;code&gt;application/x-www-form-urlencoded&lt;/code&gt; string using &lt;code&gt;UTF-8&lt;/code&gt; encoding scheme.<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>    *<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>    * @param s The string to encode.<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>    * @return The encoded string, or &lt;jk&gt;null&lt;/jk&gt; if input is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>    */<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>   public static String urlEncode(String s) {<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>      if (s == null)<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>         return null;<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>      boolean needsEncode = false;<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>      for (int i = 0; i &lt; s.length() &amp;&amp; ! needsEncode; i++)<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>         needsEncode |= (! unencodedChars.contains(s.charAt(i)));<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>      if (needsEncode) {<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>         try {<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>            return URLEncoder.encode(s, "UTF-8");<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>         } catch (UnsupportedEncodingException e) {/* Won't happen */}<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>      }<a name="line.1311"></a>
+<span class="sourceLineNo">1072</span>    * Replaces &lt;js&gt;"\\uXXXX"&lt;/js&gt; character sequences with their unicode characters.<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>    *<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>    * @param s The string to replace unicode sequences in.<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>    * @return A string with unicode sequences replaced.<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>    */<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>   public static String replaceUnicodeSequences(String s) {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>      if (s.indexOf('\\') == -1)<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>         return s;<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>      Pattern p = Pattern.compile("\\\\u(\\p{XDigit}{4})");<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>      Matcher m = p.matcher(s);<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>      StringBuffer sb = new StringBuffer(s.length());<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>      while (m.find()) {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>         String ch = String.valueOf((char) Integer.parseInt(m.group(1), 16));<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>         m.appendReplacement(sb, Matcher.quoteReplacement(ch));<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>      }<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>      m.appendTai

<TRUNCATED>


[02/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/utils/PojoQuery.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/utils/PojoQuery.html b/content/site/apidocs/src-html/org/apache/juneau/utils/PojoQuery.html
index fe50e73..6b46ec8 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/utils/PojoQuery.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/utils/PojoQuery.html
@@ -31,7 +31,7 @@
 <span class="sourceLineNo">023</span>import org.apache.juneau.internal.*;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
 <span class="sourceLineNo">025</span>/**<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * Designed to provide query/view/sort/paging filtering on tabular in-memory POJO models.<a name="line.26"></a>
+<span class="sourceLineNo">026</span> * Designed to provide search/view/sort/paging filtering on tabular in-memory POJO models.<a name="line.26"></a>
 <span class="sourceLineNo">027</span> * &lt;p&gt;<a name="line.27"></a>
 <span class="sourceLineNo">028</span> * It can also perform just view filtering on beans/maps.<a name="line.28"></a>
 <span class="sourceLineNo">029</span> * &lt;p&gt;<a name="line.29"></a>
@@ -46,1216 +46,1109 @@
 <span class="sourceLineNo">038</span> * Tabular POJO models can be thought of as tables of data.  For example, a list of the following beans...<a name="line.38"></a>
 <span class="sourceLineNo">039</span> * &lt;p class='bcode'&gt;<a name="line.39"></a>
 <span class="sourceLineNo">040</span> *    &lt;jk&gt;public&lt;/jk&gt; MyBean {<a name="line.40"></a>
-<span class="sourceLineNo">041</span> *       &lt;jk&gt;public int&lt;/jk&gt; fi;<a name="line.41"></a>
-<span class="sourceLineNo">042</span> *       &lt;jk&gt;public&lt;/jk&gt; String fs;<a name="line.42"></a>
-<span class="sourceLineNo">043</span> *       &lt;jk&gt;public&lt;/jk&gt; Date fd;<a name="line.43"></a>
+<span class="sourceLineNo">041</span> *       &lt;jk&gt;public int&lt;/jk&gt; myInt;<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *       &lt;jk&gt;public&lt;/jk&gt; String myString;<a name="line.42"></a>
+<span class="sourceLineNo">043</span> *       &lt;jk&gt;public&lt;/jk&gt; Date myDate;<a name="line.43"></a>
 <span class="sourceLineNo">044</span> *    }<a name="line.44"></a>
 <span class="sourceLineNo">045</span> * &lt;p&gt;<a name="line.45"></a>
 <span class="sourceLineNo">046</span> *    ... can be thought of a table containing the following columns...<a name="line.46"></a>
 <span class="sourceLineNo">047</span> * &lt;p&gt;<a name="line.47"></a>
 <span class="sourceLineNo">048</span> *    &lt;table class='styled code'&gt;<a name="line.48"></a>
-<span class="sourceLineNo">049</span> *       &lt;tr&gt;&lt;th&gt;fi&lt;/th&gt;&lt;th&gt;fs&lt;/th&gt;&lt;th&gt;fd&lt;/th&gt;&lt;/tr&gt;<a name="line.49"></a>
+<span class="sourceLineNo">049</span> *       &lt;tr&gt;&lt;th&gt;myInt&lt;/th&gt;&lt;th&gt;myString&lt;/th&gt;&lt;th&gt;myDate&lt;/th&gt;&lt;/tr&gt;<a name="line.49"></a>
 <span class="sourceLineNo">050</span> *       &lt;tr&gt;&lt;td&gt;123&lt;/td&gt;&lt;td&gt;'foobar'&lt;/td&gt;&lt;td&gt;yyyy/MM/dd HH:mm:ss&lt;/td&gt;&lt;/tr&gt;<a name="line.50"></a>
 <span class="sourceLineNo">051</span> *       &lt;tr&gt;&lt;td colspan=3&gt;...&lt;/td&gt;&lt;/tr&gt;<a name="line.51"></a>
 <span class="sourceLineNo">052</span> *    &lt;/table&gt;<a name="line.52"></a>
 <span class="sourceLineNo">053</span> * &lt;p&gt;<a name="line.53"></a>
 <span class="sourceLineNo">054</span> * From this table, you can perform the following functions:<a name="line.54"></a>
 <span class="sourceLineNo">055</span> *    &lt;ul class='spaced-list'&gt;<a name="line.55"></a>
-<span class="sourceLineNo">056</span> *       &lt;li&gt;Query - Return only rows where a search pattern matches.<a name="line.56"></a>
+<span class="sourceLineNo">056</span> *       &lt;li&gt;Search - Return only rows where a search pattern matches.<a name="line.56"></a>
 <span class="sourceLineNo">057</span> *       &lt;li&gt;View - Return only the specified subset of columns in the specified order.<a name="line.57"></a>
 <span class="sourceLineNo">058</span> *       &lt;li&gt;Sort - Sort the table by one or more columns.<a name="line.58"></a>
-<span class="sourceLineNo">059</span> *       &lt;li&gt;Page - Only return a subset of rows.<a name="line.59"></a>
+<span class="sourceLineNo">059</span> *       &lt;li&gt;Position/limit - Only return a subset of rows.<a name="line.59"></a>
 <span class="sourceLineNo">060</span> *    &lt;/ul&gt;<a name="line.60"></a>
 <span class="sourceLineNo">061</span> *<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * &lt;h5 class='topic'&gt;Query&lt;/h5&gt;<a name="line.62"></a>
+<span class="sourceLineNo">062</span> * &lt;h5 class='topic'&gt;Search&lt;/h5&gt;<a name="line.62"></a>
 <span class="sourceLineNo">063</span> * &lt;p&gt;<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * The query capabilites allow you to filter based on query patterns against<a name="line.64"></a>
+<span class="sourceLineNo">064</span> * The search capabilities allow you to filter based on query patterns against<a name="line.64"></a>
 <span class="sourceLineNo">065</span> *    strings, dates, and numbers.  Queries take the form of a Map with column names<a name="line.65"></a>
 <span class="sourceLineNo">066</span> *    as keys, and search patterns as values.  &lt;br&gt;<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * Search patterns can be either {@code Strings} or {@code Maps}.&lt;br&gt;<a name="line.67"></a>
-<span class="sourceLineNo">068</span> * Multiple search patterns are ANDed (i.e. all patterns must match for the row to be returned).<a name="line.68"></a>
-<span class="sourceLineNo">069</span> *<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * &lt;ul class='spaced-list'&gt;<a name="line.71"></a>
-<span class="sourceLineNo">072</span> *    &lt;li&gt;&lt;tt&gt;{fi:'123'}&lt;/tt&gt; - Return only rows where the &lt;tt&gt;fi&lt;/tt&gt; column is 123.<a name="line.72"></a>
-<span class="sourceLineNo">073</span> *    &lt;li&gt;&lt;tt&gt;{fs:'foobar'}&lt;/tt&gt; - Return only rows where the &lt;tt&gt;fs&lt;/tt&gt; column is 'foobar'.<a name="line.73"></a>
-<span class="sourceLineNo">074</span> *    &lt;li&gt;&lt;tt&gt;{fd:'2001'}&lt;/tt&gt; - Return only rows where the &lt;tt&gt;fd&lt;/tt&gt; column have dates in the year 2001.<a name="line.74"></a>
-<span class="sourceLineNo">075</span> *    &lt;li&gt;&lt;tt&gt;{fs:'foobar'}&lt;/tt&gt; - Return only rows where the &lt;tt&gt;fs&lt;/tt&gt; column is 'foobar'.<a name="line.75"></a>
-<span class="sourceLineNo">076</span> *       and the &lt;tt&gt;fs&lt;/tt&gt; column starts with &lt;tt&gt;"foo"&lt;/tt&gt;.<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * &lt;/ul&gt;<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * &lt;p&gt;<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * Search patterns can also be applied to lower level fields.  For example, the search term<a name="line.79"></a>
-<span class="sourceLineNo">080</span> *    &lt;tt&gt;{f1:{f2:{f3{'foobar'}}}&lt;/tt&gt; means only return top level rows where the &lt;tt&gt;f1.getF2().getF3()&lt;/tt&gt;<a name="line.80"></a>
-<span class="sourceLineNo">081</span> *    property is &lt;tt&gt;'foobar'&lt;/tt&gt;.<a name="line.81"></a>
-<span class="sourceLineNo">082</span> *<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * &lt;h5 class='topic'&gt;String Patterns&lt;/h5&gt;<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;p&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * Any objects can be queried against using string patterns.  If the objects being<a name="line.85"></a>
-<span class="sourceLineNo">086</span> *    searched are not strings, then the patterns are matched against whatever is<a name="line.86"></a>
-<span class="sourceLineNo">087</span> *    return by the {@code Object#toString()} method.<a name="line.87"></a>
-<span class="sourceLineNo">088</span> *<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * &lt;h6 class='topic'&gt;Example string query patterns:&lt;/h6&gt;<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * &lt;ul&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> *    &lt;li&gt;&lt;tt&gt;foo&lt;/tt&gt; - The string 'foo'<a name="line.91"></a>
-<span class="sourceLineNo">092</span> *    &lt;li&gt;&lt;tt&gt;foo bar&lt;/tt&gt; - The string 'foo' or the string 'bar'<a name="line.92"></a>
-<span class="sourceLineNo">093</span> *    &lt;li&gt;&lt;tt&gt;'foo bar'&lt;/tt&gt; - The phrase 'foo bar'<a name="line.93"></a>
-<span class="sourceLineNo">094</span> *    &lt;li&gt;&lt;tt&gt;"foo bar"&lt;/tt&gt; - The phrase 'foo bar'<a name="line.94"></a>
-<span class="sourceLineNo">095</span> *    &lt;li&gt;&lt;tt&gt;foo*&lt;/tt&gt; - &lt;tt&gt;*&lt;/tt&gt; matches zero-or-more characters.<a name="line.95"></a>
-<span class="sourceLineNo">096</span> *    &lt;li&gt;&lt;tt&gt;foo?&lt;/tt&gt; - &lt;tt&gt;?&lt;/tt&gt; matches exactly one character<a name="line.96"></a>
+<span class="sourceLineNo">067</span> * Multiple search patterns are ANDed (i.e. all patterns must match for the row to be returned).<a name="line.67"></a>
+<span class="sourceLineNo">068</span> *<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * &lt;ul class='spaced-list'&gt;<a name="line.70"></a>
+<span class="sourceLineNo">071</span> *    &lt;li&gt;&lt;tt&gt;{myInt:'123'}&lt;/tt&gt; - Return only rows where the &lt;tt&gt;myInt&lt;/tt&gt; column is 123.<a name="line.71"></a>
+<span class="sourceLineNo">072</span> *    &lt;li&gt;&lt;tt&gt;{myString:'foobar'}&lt;/tt&gt; - Return only rows where the &lt;tt&gt;myString&lt;/tt&gt; column is 'foobar'.<a name="line.72"></a>
+<span class="sourceLineNo">073</span> *    &lt;li&gt;&lt;tt&gt;{myDate:'2001'}&lt;/tt&gt; - Return only rows where the &lt;tt&gt;myDate&lt;/tt&gt; column have dates in the year 2001.<a name="line.73"></a>
+<span class="sourceLineNo">074</span> * &lt;/ul&gt;<a name="line.74"></a>
+<span class="sourceLineNo">075</span> *<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * &lt;h5 class='topic'&gt;String Patterns&lt;/h5&gt;<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * &lt;p&gt;<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * Any objects can be queried against using string patterns.  If the objects being<a name="line.78"></a>
+<span class="sourceLineNo">079</span> *    searched are not strings, then the patterns are matched against whatever is<a name="line.79"></a>
+<span class="sourceLineNo">080</span> *    return by the {@code Object#toString()} method.<a name="line.80"></a>
+<span class="sourceLineNo">081</span> *<a name="line.81"></a>
+<span class="sourceLineNo">082</span> * &lt;h6 class='topic'&gt;Example string query patterns:&lt;/h6&gt;<a name="line.82"></a>
+<span class="sourceLineNo">083</span> * &lt;ul&gt;<a name="line.83"></a>
+<span class="sourceLineNo">084</span> *    &lt;li&gt;&lt;tt&gt;foo&lt;/tt&gt; - The string 'foo'<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *    &lt;li&gt;&lt;tt&gt;foo bar&lt;/tt&gt; - The string 'foo' or the string 'bar'<a name="line.85"></a>
+<span class="sourceLineNo">086</span> *    &lt;li&gt;&lt;tt&gt;'foo bar'&lt;/tt&gt; - The phrase 'foo bar'<a name="line.86"></a>
+<span class="sourceLineNo">087</span> *    &lt;li&gt;&lt;tt&gt;"foo bar"&lt;/tt&gt; - The phrase 'foo bar'<a name="line.87"></a>
+<span class="sourceLineNo">088</span> *    &lt;li&gt;&lt;tt&gt;foo*&lt;/tt&gt; - &lt;tt&gt;*&lt;/tt&gt; matches zero-or-more characters.<a name="line.88"></a>
+<span class="sourceLineNo">089</span> *    &lt;li&gt;&lt;tt&gt;foo?&lt;/tt&gt; - &lt;tt&gt;?&lt;/tt&gt; matches exactly one character<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * &lt;/ul&gt;<a name="line.90"></a>
+<span class="sourceLineNo">091</span> *<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * &lt;h5 class='section'&gt;Notes:&lt;/h5&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;ul class='spaced-list'&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> *    &lt;li&gt;Whitespace is ignored around search patterns.<a name="line.94"></a>
+<span class="sourceLineNo">095</span> *    &lt;li&gt;Prepend &lt;tt&gt;+&lt;/tt&gt; to tokens that must match.  (e.g. &lt;tt&gt;+foo* +*bar&lt;/tt&gt;)<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *    &lt;li&gt;Prepend &lt;tt&gt;-&lt;/tt&gt; to tokens that must not match.  (e.g. &lt;tt&gt;+foo* -*bar&lt;/tt&gt;)<a name="line.96"></a>
 <span class="sourceLineNo">097</span> * &lt;/ul&gt;<a name="line.97"></a>
 <span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * &lt;h5 class='section'&gt;Notes:&lt;/h5&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * &lt;ul class='spaced-list'&gt;<a name="line.100"></a>
-<span class="sourceLineNo">101</span> *    &lt;li&gt;Whitespace is ignored around search patterns.<a name="line.101"></a>
-<span class="sourceLineNo">102</span> *    &lt;li&gt;Prepend &lt;tt&gt;+&lt;/tt&gt; to tokens that must match.  (e.g. &lt;tt&gt;+foo* +*bar&lt;/tt&gt;)<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *    &lt;li&gt;Prepend &lt;tt&gt;-&lt;/tt&gt; to tokens that must not match.  (e.g. &lt;tt&gt;+foo* -*bar&lt;/tt&gt;)<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * &lt;/ul&gt;<a name="line.104"></a>
-<span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * &lt;h5 class='topic'&gt;Numeric Patterns&lt;/h5&gt;<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * &lt;p&gt;<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * Any object of type {@link Number} (or numeric primitives) can be searched using numeric patterns.<a name="line.108"></a>
-<span class="sourceLineNo">109</span> *<a name="line.109"></a>
-<span class="sourceLineNo">110</span> * &lt;h6 class='topic'&gt;Example numeric query patterns:&lt;/h6&gt;<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * &lt;ul&gt;<a name="line.111"></a>
-<span class="sourceLineNo">112</span> *    &lt;li&gt;&lt;tt&gt;123&lt;/tt&gt; - The single number 123<a name="line.112"></a>
-<span class="sourceLineNo">113</span> *    &lt;li&gt;&lt;tt&gt;1 2 3&lt;/tt&gt;   - 1, 2, or 3<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *    &lt;li&gt;&lt;tt&gt;1-100&lt;/tt&gt; - Between 1 and 100<a name="line.114"></a>
-<span class="sourceLineNo">115</span> *    &lt;li&gt;&lt;tt&gt;1 - 100&lt;/tt&gt; - Between 1 and 100<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *    &lt;li&gt;&lt;tt&gt;1 - 100 200-300&lt;/tt&gt; - Between 1 and 100 or between 200 and 300<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *    &lt;li&gt;&lt;tt&gt;&amp;gt; 100&lt;/tt&gt; - Greater than 100<a name="line.117"></a>
-<span class="sourceLineNo">118</span> *    &lt;li&gt;&lt;tt&gt;&amp;gt;= 100&lt;/tt&gt; - Greater than or equal to 100<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *    &lt;li&gt;&lt;tt&gt;!123&lt;/tt&gt; - Not 123<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * &lt;/ul&gt;<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *<a name="line.121"></a>
-<span class="sourceLineNo">122</span> * &lt;h5 class='section'&gt;Notes:&lt;/h5&gt;<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * &lt;ul class='spaced-list'&gt;<a name="line.123"></a>
-<span class="sourceLineNo">124</span> *    &lt;li&gt;Whitespace is ignored in search patterns.<a name="line.124"></a>
-<span class="sourceLineNo">125</span> *    &lt;li&gt;Negative numbers are supported.<a name="line.125"></a>
-<span class="sourceLineNo">126</span> * &lt;/ul&gt;<a name="line.126"></a>
-<span class="sourceLineNo">127</span> *<a name="line.127"></a>
-<span class="sourceLineNo">128</span> * &lt;h5 class='topic'&gt;Date Patterns&lt;/h5&gt;<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * &lt;p&gt;<a name="line.129"></a>
-<span class="sourceLineNo">130</span> * Any object of type {@link Date} or {@link Calendar} can be searched using date patterns.<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * &lt;p&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * The default valid input timestamp formats (which can be overridden via the {@link #setValidTimestampFormats(String...)} method are...<a name="line.132"></a>
-<span class="sourceLineNo">133</span> *<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * &lt;ul&gt;<a name="line.134"></a>
-<span class="sourceLineNo">135</span> *    &lt;li&gt;&lt;tt&gt;yyyy.MM.dd.HH.mm.ss&lt;/tt&gt;<a name="line.135"></a>
-<span class="sourceLineNo">136</span> *    &lt;li&gt;&lt;tt&gt;yyyy.MM.dd.HH.mm&lt;/tt&gt;<a name="line.136"></a>
-<span class="sourceLineNo">137</span> *    &lt;li&gt;&lt;tt&gt;yyyy.MM.dd.HH&lt;/tt&gt;<a name="line.137"></a>
-<span class="sourceLineNo">138</span> *    &lt;li&gt;&lt;tt&gt;yyyy.MM.dd&lt;/tt&gt;<a name="line.138"></a>
-<span class="sourceLineNo">139</span> *    &lt;li&gt;&lt;tt&gt;yyyy.MM&lt;/tt&gt;<a name="line.139"></a>
-<span class="sourceLineNo">140</span> *    &lt;li&gt;&lt;tt&gt;yyyy&lt;/tt&gt;<a name="line.140"></a>
-<span class="sourceLineNo">141</span> * &lt;/ul&gt;<a name="line.141"></a>
-<span class="sourceLineNo">142</span> *<a name="line.142"></a>
-<span class="sourceLineNo">143</span> * &lt;h6 class='topic'&gt;Example date query patterns:&lt;/h6&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span> * &lt;ul&gt;<a name="line.144"></a>
-<span class="sourceLineNo">145</span> *    &lt;li&gt;&lt;tt&gt;2001&lt;/tt&gt; - A specific year.<a name="line.145"></a>
-<span class="sourceLineNo">146</span> *    &lt;li&gt;&lt;tt&gt;2001.01.01.10.50&lt;/tt&gt; - A specific time.<a name="line.146"></a>
-<span class="sourceLineNo">147</span> *    &lt;li&gt;&lt;tt&gt;&amp;gt;2001&lt;/tt&gt;   - After a specific year.<a name="line.147"></a>
-<span class="sourceLineNo">148</span> *    &lt;li&gt;&lt;tt&gt;&amp;gt;=2001&lt;/tt&gt; - During or after a specific year.<a name="line.148"></a>
-<span class="sourceLineNo">149</span> *    &lt;li&gt;&lt;tt&gt;2001 - 2003.06.30&lt;/tt&gt;   - A date range.<a name="line.149"></a>
-<span class="sourceLineNo">150</span> *    &lt;li&gt;&lt;tt&gt;2001 2003 2005&lt;/tt&gt;   - Multiple date patterns are ORed.<a name="line.150"></a>
-<span class="sourceLineNo">151</span> * &lt;/ul&gt;<a name="line.151"></a>
-<span class="sourceLineNo">152</span> *<a name="line.152"></a>
-<span class="sourceLineNo">153</span> * &lt;h5 class='section'&gt;Notes:&lt;/h5&gt;<a name="line.153"></a>
-<span class="sourceLineNo">154</span> * &lt;ul&gt;<a name="line.154"></a>
-<span class="sourceLineNo">155</span> *    &lt;li&gt;Whitespace is ignored in search patterns.<a name="line.155"></a>
-<span class="sourceLineNo">156</span> * &lt;/ul&gt;<a name="line.156"></a>
-<span class="sourceLineNo">157</span> *<a name="line.157"></a>
-<span class="sourceLineNo">158</span> * &lt;h5 class='topic'&gt;View&lt;/h5&gt;<a name="line.158"></a>
-<span class="sourceLineNo">159</span> * &lt;p&gt;<a name="line.159"></a>
-<span class="sourceLineNo">160</span> * The view capability allows you to return only the specified subset of columns in the<a name="line.160"></a>
-<span class="sourceLineNo">161</span> *    specified order.&lt;br&gt;<a name="line.161"></a>
-<span class="sourceLineNo">162</span> * The view parameter is a list of either &lt;tt&gt;Strings&lt;/tt&gt; or &lt;tt&gt;Maps&lt;/tt&gt;.<a name="line.162"></a>
-<span class="sourceLineNo">163</span> *<a name="line.163"></a>
-<span class="sourceLineNo">164</span> * &lt;h6 class='topic'&gt;Example view parameters:&lt;/h6&gt;<a name="line.164"></a>
-<span class="sourceLineNo">165</span> * &lt;ul&gt;<a name="line.165"></a>
-<span class="sourceLineNo">166</span> *    &lt;li&gt;&lt;tt&gt;['f1']&lt;/tt&gt; - Return only column 'f1'.<a name="line.166"></a>
-<span class="sourceLineNo">167</span> *    &lt;li&gt;&lt;tt&gt;['f2','f1']&lt;/tt&gt; - Return only columns 'f2' and 'f1'.<a name="line.167"></a>
-<span class="sourceLineNo">168</span> *    &lt;li&gt;&lt;tt&gt;['f1',{f2:'f3'}]&lt;/tt&gt; - Return only columns 'f1' and 'f2', but for 'f2' objects,<a name="line.168"></a>
-<span class="sourceLineNo">169</span> *       only show the 'f3' property.<a name="line.169"></a>
-<span class="sourceLineNo">170</span> * &lt;/ul&gt;<a name="line.170"></a>
-<span class="sourceLineNo">171</span> *<a name="line.171"></a>
-<span class="sourceLineNo">172</span> * &lt;h5 class='topic'&gt;Sort&lt;/h5&gt;<a name="line.172"></a>
-<span class="sourceLineNo">173</span> * &lt;p&gt;<a name="line.173"></a>
-<span class="sourceLineNo">174</span> * The sort capability allows you to sort values by the specified rows.&lt;br&gt;<a name="line.174"></a>
-<span class="sourceLineNo">175</span> * The sort parameter is a list of either &lt;tt&gt;Strings&lt;/tt&gt; or &lt;tt&gt;Maps&lt;/tt&gt;.&lt;br&gt;<a name="line.175"></a>
-<span class="sourceLineNo">176</span> *    &lt;tt&gt;Strings&lt;/tt&gt; represent column names to sort ascending.  If you want<a name="line.176"></a>
-<span class="sourceLineNo">177</span> *    to sort descending, you need to specify a &lt;tt&gt;Map&lt;/tt&gt; of the form &lt;tt&gt;{colname:'d'}&lt;/tt&gt;<a name="line.177"></a>
-<span class="sourceLineNo">178</span> *<a name="line.178"></a>
-<span class="sourceLineNo">179</span> * &lt;h6 class='topic'&gt;Example sort parameters:&lt;/h6&gt;<a name="line.179"></a>
-<span class="sourceLineNo">180</span> * &lt;ul&gt;<a name="line.180"></a>
-<span class="sourceLineNo">181</span> *    &lt;li&gt;&lt;tt&gt;['f1']&lt;/tt&gt; - Sort rows by column 'f1' ascending.<a name="line.181"></a>
-<span class="sourceLineNo">182</span> *    &lt;li&gt;&lt;tt&gt;[{f1:'a'}]&lt;/tt&gt; - Sort rows by column 'f1' ascending.<a name="line.182"></a>
-<span class="sourceLineNo">183</span> *    &lt;li&gt;&lt;tt&gt;[{f1:'d'}]&lt;/tt&gt; - Sort rows by column 'f1' descending.<a name="line.183"></a>
-<span class="sourceLineNo">184</span> *    &lt;li&gt;&lt;tt&gt;[{f1:'a'},{f2:'d'}]&lt;/tt&gt; - Sort rows by column 'f1' ascending, then 'f2' descending.<a name="line.184"></a>
-<span class="sourceLineNo">185</span> * &lt;/ul&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span> *<a name="line.186"></a>
-<span class="sourceLineNo">187</span> * &lt;h5 class='topic'&gt;Paging&lt;/h5&gt;<a name="line.187"></a>
-<span class="sourceLineNo">188</span> * &lt;p&gt;<a name="line.188"></a>
-<span class="sourceLineNo">189</span> * Use the &lt;tt&gt;pos&lt;/tt&gt; and &lt;tt&gt;limit&lt;/tt&gt; parameters to specify a subset of rows to<a name="line.189"></a>
-<span class="sourceLineNo">190</span> *    return.<a name="line.190"></a>
-<span class="sourceLineNo">191</span> *<a name="line.191"></a>
-<span class="sourceLineNo">192</span> * &lt;h5 class='topic'&gt;Other Notes&lt;/h5&gt;<a name="line.192"></a>
-<span class="sourceLineNo">193</span> * &lt;ul class='spaced-list'&gt;<a name="line.193"></a>
-<span class="sourceLineNo">194</span> *    &lt;li&gt;Calling &lt;tt&gt;filterMap()&lt;/tt&gt; or &lt;tt&gt;filterCollection()&lt;/tt&gt; always returns a new data<a name="line.194"></a>
-<span class="sourceLineNo">195</span> *       structure, so the methods can be called multiple times against the same input.<a name="line.195"></a>
-<span class="sourceLineNo">196</span> * &lt;/ul&gt;<a name="line.196"></a>
-<span class="sourceLineNo">197</span> */<a name="line.197"></a>
-<span class="sourceLineNo">198</span>@SuppressWarnings({"unchecked","rawtypes"})<a name="line.198"></a>
-<span class="sourceLineNo">199</span>public final class PojoQuery {<a name="line.199"></a>
+<span class="sourceLineNo">099</span> * &lt;h5 class='topic'&gt;Numeric Patterns&lt;/h5&gt;<a name="line.99"></a>
+<span class="sourceLineNo">100</span> * &lt;p&gt;<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * Any object of type {@link Number} (or numeric primitives) can be searched using numeric patterns.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> *<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &lt;h6 class='topic'&gt;Example numeric query patterns:&lt;/h6&gt;<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * &lt;ul&gt;<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *    &lt;li&gt;&lt;tt&gt;123&lt;/tt&gt; - The single number 123<a name="line.105"></a>
+<span class="sourceLineNo">106</span> *    &lt;li&gt;&lt;tt&gt;1 2 3&lt;/tt&gt;   - 1, 2, or 3<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *    &lt;li&gt;&lt;tt&gt;1-100&lt;/tt&gt; - Between 1 and 100<a name="line.107"></a>
+<span class="sourceLineNo">108</span> *    &lt;li&gt;&lt;tt&gt;1 - 100&lt;/tt&gt; - Between 1 and 100<a name="line.108"></a>
+<span class="sourceLineNo">109</span> *    &lt;li&gt;&lt;tt&gt;1 - 100 200-300&lt;/tt&gt; - Between 1 and 100 or between 200 and 300<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *    &lt;li&gt;&lt;tt&gt;&amp;gt; 100&lt;/tt&gt; - Greater than 100<a name="line.110"></a>
+<span class="sourceLineNo">111</span> *    &lt;li&gt;&lt;tt&gt;&amp;gt;= 100&lt;/tt&gt; - Greater than or equal to 100<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *    &lt;li&gt;&lt;tt&gt;!123&lt;/tt&gt; - Not 123<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * &lt;/ul&gt;<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * &lt;h5 class='section'&gt;Notes:&lt;/h5&gt;<a name="line.115"></a>
+<span class="sourceLineNo">116</span> * &lt;ul class='spaced-list'&gt;<a name="line.116"></a>
+<span class="sourceLineNo">117</span> *    &lt;li&gt;Whitespace is ignored in search patterns.<a name="line.117"></a>
+<span class="sourceLineNo">118</span> *    &lt;li&gt;Negative numbers are supported.<a name="line.118"></a>
+<span class="sourceLineNo">119</span> * &lt;/ul&gt;<a name="line.119"></a>
+<span class="sourceLineNo">120</span> *<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * &lt;h5 class='topic'&gt;Date Patterns&lt;/h5&gt;<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * &lt;p&gt;<a name="line.122"></a>
+<span class="sourceLineNo">123</span> * Any object of type {@link Date} or {@link Calendar} can be searched using date patterns.<a name="line.123"></a>
+<span class="sourceLineNo">124</span> * &lt;p&gt;<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * The default valid input timestamp formats (which can be overridden via the {@link #setValidTimestampFormats(String...)} method are...<a name="line.125"></a>
+<span class="sourceLineNo">126</span> *<a name="line.126"></a>
+<span class="sourceLineNo">127</span> * &lt;ul&gt;<a name="line.127"></a>
+<span class="sourceLineNo">128</span> *    &lt;li&gt;&lt;tt&gt;yyyy.MM.dd.HH.mm.ss&lt;/tt&gt;<a name="line.128"></a>
+<span class="sourceLineNo">129</span> *    &lt;li&gt;&lt;tt&gt;yyyy.MM.dd.HH.mm&lt;/tt&gt;<a name="line.129"></a>
+<span class="sourceLineNo">130</span> *    &lt;li&gt;&lt;tt&gt;yyyy.MM.dd.HH&lt;/tt&gt;<a name="line.130"></a>
+<span class="sourceLineNo">131</span> *    &lt;li&gt;&lt;tt&gt;yyyy.MM.dd&lt;/tt&gt;<a name="line.131"></a>
+<span class="sourceLineNo">132</span> *    &lt;li&gt;&lt;tt&gt;yyyy.MM&lt;/tt&gt;<a name="line.132"></a>
+<span class="sourceLineNo">133</span> *    &lt;li&gt;&lt;tt&gt;yyyy&lt;/tt&gt;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * &lt;/ul&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span> *<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * &lt;h6 class='topic'&gt;Example date query patterns:&lt;/h6&gt;<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * &lt;ul&gt;<a name="line.137"></a>
+<span class="sourceLineNo">138</span> *    &lt;li&gt;&lt;tt&gt;2001&lt;/tt&gt; - A specific year.<a name="line.138"></a>
+<span class="sourceLineNo">139</span> *    &lt;li&gt;&lt;tt&gt;2001.01.01.10.50&lt;/tt&gt; - A specific time.<a name="line.139"></a>
+<span class="sourceLineNo">140</span> *    &lt;li&gt;&lt;tt&gt;&amp;gt;2001&lt;/tt&gt;   - After a specific year.<a name="line.140"></a>
+<span class="sourceLineNo">141</span> *    &lt;li&gt;&lt;tt&gt;&amp;gt;=2001&lt;/tt&gt; - During or after a specific year.<a name="line.141"></a>
+<span class="sourceLineNo">142</span> *    &lt;li&gt;&lt;tt&gt;2001 - 2003.06.30&lt;/tt&gt;   - A date range.<a name="line.142"></a>
+<span class="sourceLineNo">143</span> *    &lt;li&gt;&lt;tt&gt;2001 2003 2005&lt;/tt&gt;   - Multiple date patterns are ORed.<a name="line.143"></a>
+<span class="sourceLineNo">144</span> * &lt;/ul&gt;<a name="line.144"></a>
+<span class="sourceLineNo">145</span> *<a name="line.145"></a>
+<span class="sourceLineNo">146</span> * &lt;h5 class='section'&gt;Notes:&lt;/h5&gt;<a name="line.146"></a>
+<span class="sourceLineNo">147</span> * &lt;ul&gt;<a name="line.147"></a>
+<span class="sourceLineNo">148</span> *    &lt;li&gt;Whitespace is ignored in search patterns.<a name="line.148"></a>
+<span class="sourceLineNo">149</span> * &lt;/ul&gt;<a name="line.149"></a>
+<span class="sourceLineNo">150</span> *<a name="line.150"></a>
+<span class="sourceLineNo">151</span> * &lt;h5 class='topic'&gt;View&lt;/h5&gt;<a name="line.151"></a>
+<span class="sourceLineNo">152</span> * &lt;p&gt;<a name="line.152"></a>
+<span class="sourceLineNo">153</span> * The view capability allows you to return only the specified subset of columns in the<a name="line.153"></a>
+<span class="sourceLineNo">154</span> *    specified order.&lt;br&gt;<a name="line.154"></a>
+<span class="sourceLineNo">155</span> * The view parameter is a list of either &lt;tt&gt;Strings&lt;/tt&gt; or &lt;tt&gt;Maps&lt;/tt&gt;.<a name="line.155"></a>
+<span class="sourceLineNo">156</span> *<a name="line.156"></a>
+<span class="sourceLineNo">157</span> * &lt;h6 class='topic'&gt;Example view parameters:&lt;/h6&gt;<a name="line.157"></a>
+<span class="sourceLineNo">158</span> * &lt;ul&gt;<a name="line.158"></a>
+<span class="sourceLineNo">159</span> *    &lt;li&gt;&lt;tt&gt;column1&lt;/tt&gt; - Return only column 'column1'.<a name="line.159"></a>
+<span class="sourceLineNo">160</span> *    &lt;li&gt;&lt;tt&gt;column2, column1&lt;/tt&gt; - Return only columns 'column2' and 'column1' in that order.<a name="line.160"></a>
+<span class="sourceLineNo">161</span> * &lt;/ul&gt;<a name="line.161"></a>
+<span class="sourceLineNo">162</span> *<a name="line.162"></a>
+<span class="sourceLineNo">163</span> * &lt;h5 class='topic'&gt;Sort&lt;/h5&gt;<a name="line.163"></a>
+<span class="sourceLineNo">164</span> * &lt;p&gt;<a name="line.164"></a>
+<span class="sourceLineNo">165</span> * The sort capability allows you to sort values by the specified rows.&lt;br&gt;<a name="line.165"></a>
+<span class="sourceLineNo">166</span> * The sort parameter is a list of strings with an optional &lt;js&gt;'+'&lt;/js&gt; or &lt;js&gt;'-'&lt;/js&gt; suffix representing<a name="line.166"></a>
+<span class="sourceLineNo">167</span> *    ascending and descending order accordingly.<a name="line.167"></a>
+<span class="sourceLineNo">168</span> *<a name="line.168"></a>
+<span class="sourceLineNo">169</span> * &lt;h6 class='topic'&gt;Example sort parameters:&lt;/h6&gt;<a name="line.169"></a>
+<span class="sourceLineNo">170</span> * &lt;ul&gt;<a name="line.170"></a>
+<span class="sourceLineNo">171</span> *    &lt;li&gt;&lt;tt&gt;column1&lt;/tt&gt; - Sort rows by column 'column1' ascending.<a name="line.171"></a>
+<span class="sourceLineNo">172</span> *    &lt;li&gt;&lt;tt&gt;column1+&lt;/tt&gt; - Sort rows by column 'column1' ascending.<a name="line.172"></a>
+<span class="sourceLineNo">173</span> *    &lt;li&gt;&lt;tt&gt;column1-&lt;/tt&gt; - Sort rows by column 'column1' descending.<a name="line.173"></a>
+<span class="sourceLineNo">174</span> *    &lt;li&gt;&lt;tt&gt;column1, column2-&lt;/tt&gt; - Sort rows by column 'column1' ascending, then 'column2' descending.<a name="line.174"></a>
+<span class="sourceLineNo">175</span> * &lt;/ul&gt;<a name="line.175"></a>
+<span class="sourceLineNo">176</span> *<a name="line.176"></a>
+<span class="sourceLineNo">177</span> * &lt;h5 class='topic'&gt;Paging&lt;/h5&gt;<a name="line.177"></a>
+<span class="sourceLineNo">178</span> * &lt;p&gt;<a name="line.178"></a>
+<span class="sourceLineNo">179</span> * Use the &lt;tt&gt;position&lt;/tt&gt; and &lt;tt&gt;limit&lt;/tt&gt; parameters to specify a subset of rows to<a name="line.179"></a>
+<span class="sourceLineNo">180</span> *    return.<a name="line.180"></a>
+<span class="sourceLineNo">181</span> */<a name="line.181"></a>
+<span class="sourceLineNo">182</span>@SuppressWarnings({"unchecked","rawtypes"})<a name="line.182"></a>
+<span class="sourceLineNo">183</span>public final class PojoQuery {<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>   private Object input;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   private ClassMeta type;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   private BeanSession session;<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>    * Constructor.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    *<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    * @param input The POJO we're going to be filtering.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    * @param session The bean session to use to create bean maps for beans.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    */<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   public PojoQuery(Object input, BeanSession session) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      this.input = input;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      this.type = session.getClassMetaForObject(input);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      this.session = session;<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>   private Object input;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   private ClassMeta type;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   private BeanSession session;<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>   /**<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    * Constructor.<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    *<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    * @param input The POJO we're going to be filtering.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    * @param session The bean session to use to create bean maps for beans.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    */<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   public PojoQuery(Object input, BeanSession session) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      this.input = input;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      this.type = session.getClassMetaForObject(input);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      this.session = session;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   }<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>   /**<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    * Filters the input object as a map.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    *<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    * @param view The list and order of properties to return from the map.  Values must be of type {@code String} or {@code Map}.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    * @return The filtered map<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   public Map filterMap(List view) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>      if (input == null)<a name="line.225"></a>
-<span class="sourceLineNo">226</span>         return null;<a name="line.226"></a>
+<span class="sourceLineNo">201</span>   /**<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    * Filters the input object as a collection of maps.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    *<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    * @param args The search arguments.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    * @return The filtered collection.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    *    &lt;br&gt;Returns the unaltered input if the input is not a collection or array of objects.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    */<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   public List filter(SearchArgs args) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>      if (input == null)<a name="line.210"></a>
+<span class="sourceLineNo">211</span>         return null;<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>      if (! type.isCollectionOrArray())<a name="line.213"></a>
+<span class="sourceLineNo">214</span>         throw new RuntimeException("Cannot call filterCollection() on class type " + type);<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>      // Create a new ObjectList<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      ObjectList l = (ObjectList)replaceWithMutables(input);<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>      // Do the search<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      CollectionFilter filter = new CollectionFilter(args.getSearch(), args.isIgnoreCase());<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      filter.doQuery(l);<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>      // If sort or view isn't empty, then we need to make sure that all entries in the<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      // list are maps.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      Map&lt;String,Boolean&gt; sort = args.getSort();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      List&lt;String&gt; view = args.getView();<a name="line.226"></a>
 <span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>      if (! type.isMapOrBean())<a name="line.228"></a>
-<span class="sourceLineNo">229</span>         throw new RuntimeException("Cannot call filterMap() on class type " + type);<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>      Map m = (Map)replaceWithMutables(input);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      doView(m, view);<a name="line.232"></a>
-<span class="sourceLineNo">233</span><a name="line.233"></a>
-<span class="sourceLineNo">234</span>      return m;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>   /**<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    * Filters the input object as a collection of maps.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    *<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    * @param query The query attributes.  Keys must be column names and values must be of type {@code String} or {@code Map}.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    * @param view The view attributes.  Values must be of type {@code String} or {@code Map}.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    * @param sort The sort attributes.  Values must be of type {@code String} or {@code Map}.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    * @param pos The index into the list to start returning results from.  Default is {@code 0}.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    * @param limit The number of rows to return.  Default is all rows.<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    * @param ignoreCase If &lt;jk&gt;true&lt;/jk&gt;, then querying is case insensitive.  Default is &lt;jk&gt;false&lt;/jk&gt;.<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    * @return The filtered collection.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    */<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   public List filterCollection(Map query, List view, List sort, int pos, int limit, boolean ignoreCase) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>      if (input == null)<a name="line.250"></a>
-<span class="sourceLineNo">251</span>         return null;<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>      if (! type.isCollectionOrArray())<a name="line.253"></a>
-<span class="sourceLineNo">254</span>         throw new RuntimeException("Cannot call filterCollection() on class type " + type);<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>      if (view == null)<a name="line.256"></a>
-<span class="sourceLineNo">257</span>         view = Collections.EMPTY_LIST;<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>      if (sort == null)<a name="line.259"></a>
-<span class="sourceLineNo">260</span>         sort = Collections.EMPTY_LIST;<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      // Create a new ObjectList<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      ObjectList l = (ObjectList)replaceWithMutables(input);<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      // Do the search<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      CollectionFilter filter = new CollectionFilter(query, ignoreCase);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      filter.doQuery(l);<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>      // If sort or view isn't empty, then we need to make sure that all entries in the<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      // list are maps.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      if ((! sort.isEmpty()) || (! view.isEmpty())) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>         if (! sort.isEmpty())<a name="line.273"></a>
-<span class="sourceLineNo">274</span>            doSort(l, sort);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>         if (! view.isEmpty())<a name="line.276"></a>
-<span class="sourceLineNo">277</span>            doView(l, view);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>      // Do the paging.<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      if (pos != 0 || limit != 0) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>         int end = (limit == 0 || limit+pos &gt;= l.size()) ? l.size() : limit + pos;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>         ObjectList l2 = new DelegateList(((DelegateList)l).getClassMeta());<a name="line.283"></a>
-<span class="sourceLineNo">284</span>         l2.addAll(l.subList(pos, end));<a name="line.284"></a>
-<span class="sourceLineNo">285</span>         l = l2;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      }<a name="line.286"></a>
+<span class="sourceLineNo">228</span>      if ((! sort.isEmpty()) || (! view.isEmpty())) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>         if (! sort.isEmpty())<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            doSort(l, sort);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>         if (! view.isEmpty())<a name="line.231"></a>
+<span class="sourceLineNo">232</span>            doView(l, view);<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>      // Do the paging.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      int pos = args.getPosition();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      int limit = args.getLimit();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      if (pos != 0 || limit != 0) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>         int end = (limit == 0 || limit+pos &gt;= l.size()) ? l.size() : limit + pos;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>         ObjectList l2 = new DelegateList(((DelegateList)l).getClassMeta());<a name="line.240"></a>
+<span class="sourceLineNo">241</span>         l2.addAll(l.subList(pos, end));<a name="line.241"></a>
+<span class="sourceLineNo">242</span>         l = l2;<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>      return l;<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>   /*<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    * If there are any non-Maps in the specified list, replaces them with BeanMaps.<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>   private Object replaceWithMutables(Object o) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      if (o == null)<a name="line.252"></a>
+<span class="sourceLineNo">253</span>         return null;<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      ClassMeta cm = session.getClassMetaForObject(o);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      if (cm.isCollection()) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>         ObjectList l = new DelegateList(session.getClassMetaForObject(o));<a name="line.256"></a>
+<span class="sourceLineNo">257</span>         for (Object o2 : (Collection)o)<a name="line.257"></a>
+<span class="sourceLineNo">258</span>            l.add(replaceWithMutables(o2));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>         return l;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      if (cm.isMap() &amp;&amp; o instanceof BeanMap) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>         BeanMap bm = (BeanMap)o;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>         DelegateBeanMap dbm = new DelegateBeanMap(bm.getBean(), session);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>         for (Object key : bm.keySet())<a name="line.264"></a>
+<span class="sourceLineNo">265</span>            dbm.addKey(key.toString());<a name="line.265"></a>
+<span class="sourceLineNo">266</span>         return dbm;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      if (cm.isBean()) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>         BeanMap bm = session.toBeanMap(o);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>         DelegateBeanMap dbm = new DelegateBeanMap(bm.getBean(), session);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>         for (Object key : bm.keySet())<a name="line.271"></a>
+<span class="sourceLineNo">272</span>            dbm.addKey(key.toString());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>         return dbm;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      if (cm.isMap()) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>         Map m = (Map)o;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>         DelegateMap dm = new DelegateMap(session.getClassMetaForObject(m));<a name="line.277"></a>
+<span class="sourceLineNo">278</span>         for (Map.Entry e : (Set&lt;Map.Entry&gt;)m.entrySet())<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            dm.put(e.getKey().toString(), e.getValue());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>         return dm;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      if (cm.isArray()) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>         return replaceWithMutables(Arrays.asList((Object[])o));<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      return o;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   }<a name="line.286"></a>
 <span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>      return l;<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>    * If there are any non-Maps in the specified list, replaces them with BeanMaps.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   private Object replaceWithMutables(Object o) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      if (o == null)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>         return null;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      ClassMeta cm = session.getClassMetaForObject(o);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      if (cm.isCollection()) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>         ObjectList l = new DelegateList(session.getClassMetaForObject(o));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>         for (Object o2 : (Collection)o)<a name="line.300"></a>
-<span class="sourceLineNo">301</span>            l.add(replaceWithMutables(o2));<a name="line.301"></a>
-<span class="sourceLineNo">302</span>         return l;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      if (cm.isMap() &amp;&amp; o instanceof BeanMap) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>         BeanMap bm = (BeanMap)o;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>         DelegateBeanMap dbm = new DelegateBeanMap(bm.getBean(), session);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>         for (BeanMapEntry e : (Set&lt;BeanMapEntry&gt;)bm.entrySet()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>            ClassMeta ct1 = e.getMeta().getClassMeta();<a name="line.308"></a>
-<span class="sourceLineNo">309</span>            if (ct1.isCollectionOrArray() || ct1.isMapOrBean() || ct1.isObject())<a name="line.309"></a>
-<span class="sourceLineNo">310</span>               dbm.put(e.getKey(), replaceWithMutables(e.getValue()));<a name="line.310"></a>
-<span class="sourceLineNo">311</span>            else<a name="line.311"></a>
-<span class="sourceLineNo">312</span>               dbm.addKey(e.getKey());<a name="line.312"></a>
-<span class="sourceLineNo">313</span>         }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>         return dbm;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      if (cm.isBean()) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>         BeanMap bm = session.toBeanMap(o);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>         DelegateBeanMap dbm = new DelegateBeanMap(bm.getBean(), session);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>         for (BeanMapEntry e : (Set&lt;BeanMapEntry&gt;)bm.entrySet()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>            ClassMeta ct1 = e.getMeta().getClassMeta();<a name="line.320"></a>
-<span class="sourceLineNo">321</span>            if (ct1.isCollectionOrArray() || ct1.isMapOrBean() || ct1.isObject()) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>               Object val = null;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>               try {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>                  val = e.getValue();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>               } catch (BeanRuntimeException ex) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>                  // Ignore.<a name="line.326"></a>
-<span class="sourceLineNo">327</span>               }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>               dbm.put(e.getKey(), replaceWithMutables(val));<a name="line.328"></a>
-<span class="sourceLineNo">329</span>            }<a name="line.329"></a>
-<span class="sourceLineNo">330</span>            else<a name="line.330"></a>
-<span class="sourceLineNo">331</span>               dbm.addKey(e.getKey());<a name="line.331"></a>
-<span class="sourceLineNo">332</span>         }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>         return dbm;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      if (cm.isMap()) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>         Map m = (Map)o;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>         DelegateMap dm = new DelegateMap(session.getClassMetaForObject(m));<a name="line.337"></a>
-<span class="sourceLineNo">338</span>         for (Map.Entry e : (Set&lt;Map.Entry&gt;)m.entrySet())<a name="line.338"></a>
-<span class="sourceLineNo">339</span>            dm.put(e.getKey().toString(), replaceWithMutables(e.getValue()));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>         return dm;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      if (cm.isArray()) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>         return replaceWithMutables(Arrays.asList((Object[])o));<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      return o;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>   /*<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    * Sorts the specified list by the sort list.<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    */<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   private static void doSort(List list, List sortList) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>      Map sort = new LinkedHashMap();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      for (Object s : sortList) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>         if (s instanceof String)<a name="line.355"></a>
-<span class="sourceLineNo">356</span>            sort.put(s, "a");<a name="line.356"></a>
-<span class="sourceLineNo">357</span>         else if (s instanceof Map) {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>            Map sm = (Map)s;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>            for (Map.Entry e : (Set&lt;Map.Entry&gt;)sm.entrySet())<a name="line.359"></a>
-<span class="sourceLineNo">360</span>               sort.put(e.getKey(), e.getValue().toString().toLowerCase(Locale.ENGLISH));<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>      // Do the sort.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      List&lt;String&gt; columns = new ArrayList&lt;String&gt;(sort.keySet());<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      Collections.reverse(columns);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      for (final String c : columns) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>         final boolean isDesc = startsWith(sort.get(c).toString(), 'd');<a name="line.368"></a>
-<span class="sourceLineNo">369</span>         Comparator comp = new Comparator&lt;Map&gt;() {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>            @Override /* Comparator */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>            public int compare(Map m1, Map m2) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>               Comparable v1 = (Comparable)m1.get(c), v2 = (Comparable)m2.get(c);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>               if (v1 == null &amp;&amp; v2 == null)<a name="line.373"></a>
-<span class="sourceLineNo">374</span>                  return 0;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>               if (v1 == null)<a name="line.375"></a>
-<span class="sourceLineNo">376</span>                  return (isDesc ? -1 : 1);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>               if (v2 == null)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>                  return (isDesc ? 1 : -1);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>               return (isDesc ? v2.compareTo(v1) : v1.compareTo(v2));<a name="line.379"></a>
-<span class="sourceLineNo">380</span>            }<a name="line.380"></a>
-<span class="sourceLineNo">381</span>         };<a name="line.381"></a>
-<span class="sourceLineNo">382</span>         Collections.sort(list, comp);<a name="line.382"></a>
+<span class="sourceLineNo">288</span>   /*<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    * Sorts the specified list by the sort list.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    */<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   private static void doSort(List list, Map&lt;String,Boolean&gt; sortList) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>      // We reverse the list and sort last to first.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      List&lt;String&gt; columns = new ArrayList&lt;String&gt;(sortList.keySet());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      Collections.reverse(columns);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      for (final String c : columns) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>         final boolean isDesc = sortList.get(c);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>         Comparator comp = new Comparator&lt;Map&gt;() {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            @Override /* Comparator */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>            public int compare(Map m1, Map m2) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>               Comparable v1 = (Comparable)m1.get(c), v2 = (Comparable)m2.get(c);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>               if (v1 == null &amp;&amp; v2 == null)<a name="line.304"></a>
+<span class="sourceLineNo">305</span>                  return 0;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>               if (v1 == null)<a name="line.306"></a>
+<span class="sourceLineNo">307</span>                  return (isDesc ? -1 : 1);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>               if (v2 == null)<a name="line.308"></a>
+<span class="sourceLineNo">309</span>                  return (isDesc ? 1 : -1);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>               return (isDesc ? v2.compareTo(v1) : v1.compareTo(v2));<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>         Collections.sort(list, comp);<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>    * Filters all but the specified view columns on all entries in the specified list.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    */<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   private static void doView(List list, List&lt;String&gt; view) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      for (ListIterator i = list.listIterator(); i.hasNext();) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>         Object o = i.next();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>         Map m = (Map)o;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>         doView(m, view);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   }<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>   /*<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    * Creates a new Map with only the entries specified in the view list.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    */<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   private static Map doView(Map m, List&lt;String&gt; view) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      if (m instanceof DelegateMap)<a name="line.332"></a>
+<span class="sourceLineNo">333</span>         ((DelegateMap)m).filterKeys(view);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      else<a name="line.334"></a>
+<span class="sourceLineNo">335</span>         ((DelegateBeanMap)m).filterKeys(view);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      return m;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>   //====================================================================================================<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   // CollectionFilter<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   //====================================================================================================<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   private class CollectionFilter {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      IMatcher entryMatcher;<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>      public CollectionFilter(Map query, boolean ignoreCase) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>         if (query != null &amp;&amp; ! query.isEmpty())<a name="line.347"></a>
+<span class="sourceLineNo">348</span>            entryMatcher = new MapMatcher(query, ignoreCase);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      }<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>      public void doQuery(List in) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>         if (in == null || entryMatcher == null)<a name="line.352"></a>
+<span class="sourceLineNo">353</span>            return;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>         for (Iterator i = in.iterator(); i.hasNext();) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>            Object o = i.next();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>            if (! entryMatcher.matches(o))<a name="line.356"></a>
+<span class="sourceLineNo">357</span>               i.remove();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>         }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   }<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>   // IMatcher<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   //====================================================================================================<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   private interface IMatcher&lt;E&gt; {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      public boolean matches(E o);<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>   // MapMatcher<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>    * Matches on a Map only if all specified entry matchers match.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   private class MapMatcher implements IMatcher&lt;Map&gt; {<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>      Map&lt;String,IMatcher&gt; entryMatchers = new HashMap&lt;String,IMatcher&gt;();<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>      public MapMatcher(Map query, boolean ignoreCase) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>         for (Map.Entry e : (Set&lt;Map.Entry&gt;)query.entrySet())<a name="line.380"></a>
+<span class="sourceLineNo">381</span>            if (e.getKey() != null &amp;&amp; e.getValue() != null)<a name="line.381"></a>
+<span class="sourceLineNo">382</span>               entryMatchers.put(e.getKey().toString(), new ObjectMatcher(e.getValue().toString(), ignoreCase));<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>   /*<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    * Filters all but the specified view columns on all entries in the specified list.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   private void doView(List list, List view) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>      for (ListIterator i = list.listIterator(); i.hasNext();) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>         Object o = i.next();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>         Map m = (Map)o;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>         doView(m, view);<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>   /*<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    * Creates a new Map with only the entries specified in the view list.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   private void doView(Map m, List view) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      List&lt;String&gt; filterKeys = new LinkedList&lt;String&gt;();<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      for (Object v : view) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>         if (v instanceof String) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>            filterKeys.add(v.toString());<a name="line.405"></a>
-<span class="sourceLineNo">406</span>         } else if (v instanceof ObjectMap) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>            ObjectMap vm = (ObjectMap)v;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>            for (Map.Entry&lt;String,Object&gt; e : vm.entrySet()) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>               String vmKey = e.getKey();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>               Object vmVal = e.getValue();<a name="line.410"></a>
-<span class="sourceLineNo">411</span>               Object mv = m.get(vmKey);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>               filterKeys.add(vmKey);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>               if (vmVal instanceof List) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>                  List l = (List)vmVal;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>                  if (mv instanceof List)<a name="line.415"></a>
-<span class="sourceLineNo">416</span>                     doView((List)mv, l);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>                  else if (mv instanceof Map)<a name="line.417"></a>
-<span class="sourceLineNo">418</span>                     doView((Map)mv, l);<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">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>      @Override /* IMatcher */<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      public boolean matches(Map m) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>         if (m == null)<a name="line.387"></a>
+<span class="sourceLineNo">388</span>            return false;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>         for (Map.Entry&lt;String,IMatcher&gt; e : entryMatchers.entrySet()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>            String key = e.getKey();<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            Object val = null;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>            if (m instanceof BeanMap) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>               val = ((BeanMap)m).getRaw(key);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>            } else {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>               val = m.get(key);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>            }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>            if (! e.getValue().matches(val))<a name="line.397"></a>
+<span class="sourceLineNo">398</span>               return false;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>         }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>         return true;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   }<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>   //====================================================================================================<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   // ObjectMatcher<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   //====================================================================================================<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   /*<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    * Matcher that uses the correct matcher based on object type.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    * Used for objects when we can't determine the object type beforehand.<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    */<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   private class ObjectMatcher implements IMatcher&lt;Object&gt; {<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>      String searchPattern;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      boolean ignoreCase;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      DateMatcher dateMatcher;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      NumberMatcher numberMatcher;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      StringMatcher stringMatcher;<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>      ObjectMatcher(String searchPattern, boolean ignoreCase) {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>         this.searchPattern = searchPattern;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>         this.ignoreCase = ignoreCase;<a name="line.421"></a>
 <span class="sourceLineNo">422</span>      }<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      if (m instanceof DelegateMap)<a name="line.423"></a>
-<span class="sourceLineNo">424</span>         ((DelegateMap)m).filterKeys(filterKeys);<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      else<a name="line.425"></a>
-<span class="sourceLineNo">426</span>         ((DelegateBeanMap)m).filterKeys(filterKeys);<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>   /*<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    * Returns the appropriate IMatcher for the specified class type.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   private IMatcher getObjectMatcherForType(String queryString, boolean ignoreCase, ClassMeta cm) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      if (cm.isDate())<a name="line.434"></a>
-<span class="sourceLineNo">435</span>         return new DateMatcher(queryString);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      if (cm.isNumber())<a name="line.436"></a>
-<span class="sourceLineNo">437</span>         return new NumberMatcher(queryString);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      if (cm.isObject())<a name="line.438"></a>
-<span class="sourceLineNo">439</span>         return new ObjectMatcher(queryString, ignoreCase);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      return new StringMatcher(queryString, ignoreCase);<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>   // CollectionFilter<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   //====================================================================================================<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   private class CollectionFilter {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      IMatcher entryMatcher;<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>      public CollectionFilter(Map query, boolean ignoreCase) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>         if (query != null &amp;&amp; ! query.isEmpty())<a name="line.450"></a>
-<span class="sourceLineNo">451</span>            entryMatcher = new MapMatcher(query, ignoreCase);<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>      public void doQuery(List in) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>         if (in == null || entryMatcher == null)<a name="line.455"></a>
-<span class="sourceLineNo">456</span>            return;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>         for (Iterator i = in.iterator(); i.hasNext();) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>            Object o = i.next();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>            if (! entryMatcher.matches(o))<a name="line.459"></a>
-<span class="sourceLineNo">460</span>               i.remove();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>         }<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>   //====================================================================================================<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   // IMatcher<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   //====================================================================================================<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   private interface IMatcher&lt;E&gt; {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      public boolean matches(E o);<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>   // MapMatcher<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>    * Matches on a Map only if all specified entry matchers match.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   private class MapMatcher implements IMatcher&lt;Map&gt; {<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>      Map&lt;String,IMatcher&gt; entryMatchers = new HashMap&lt;String,IMatcher&gt;();<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>      public MapMatcher(Map query, boolean ignoreCase) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>         for (Map.Entry e : (Set&lt;Map.Entry&gt;)query.entrySet()) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>            String key = e.getKey().toString();<a name="line.484"></a>
-<span class="sourceLineNo">485</span>            Object value = e.getValue();<a name="line.485"></a>
-<span class="sourceLineNo">486</span>            IMatcher matcher = null;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>            if (value instanceof String)<a name="line.487"></a>
-<span class="sourceLineNo">488</span>               matcher = getObjectMatcherForType((String)value, ignoreCase, session.object());<a name="line.488"></a>
-<span class="sourceLineNo">489</span>            else if (value instanceof ObjectMap)<a name="line.489"></a>
-<span class="sourceLineNo">490</span>               matcher = new MapMatcher((ObjectMap)value, ignoreCase);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>            else<a name="line.491"></a>
-<span class="sourceLineNo">492</span>               throw new RuntimeException("Invalid value type: " + value);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>            entryMatchers.put(key, matcher);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>         }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      @Override /* IMatcher */<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      public boolean matches(Map m) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>         if (m == null)<a name="line.499"></a>
-<span class="sourceLineNo">500</span>            return false;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>         for (Map.Entry&lt;String,IMatcher&gt; e : entryMatchers.entrySet()) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>            String key = e.getKey();<a name="line.502"></a>
-<span class="sourceLineNo">503</span>            Object val = m.get(key);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>            if (! e.getValue().matches(val))<a name="line.504"></a>
-<span class="sourceLineNo">505</span>               return false;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>         }<a name="line.506"></a>
-<span class="sourceLineNo">507</span>         return true;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>   //====================================================================================================<a name="line.511"></a>
-<span class="sourceLineNo">512</span>   // ObjectMatcher<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   //====================================================================================================<a name="line.513"></a>
-<span class="sourceLineNo">514</span>   /*<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    * Matcher that uses the correct matcher based on object type.<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    * Used for objects when we can't determine the object type beforehand.<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    */<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   private class ObjectMatcher implements IMatcher&lt;Object&gt; {<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>      String searchPattern;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      boolean ignoreCase;<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      DateMatcher dateMatcher;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      NumberMatcher numberMatcher;<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      StringMatcher stringMatcher;<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>      ObjectMatcher(String searchPattern, boolean ignoreCase) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>         this.searchPattern = searchPattern;<a name="line.527"></a>
-<span class="sourceLineNo">528</span>         this.ignoreCase = ignoreCase;<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      }<a name="line.529"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>      @Override /* IMatcher */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      public boolean matches(Object o) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>         if (o instanceof Number)<a name="line.426"></a>
+<span class="sourceLineNo">427</span>            return getNumberMatcher().matches(o);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>         if (o instanceof Date || o instanceof Calendar)<a name="line.428"></a>
+<span class="sourceLineNo">429</span>            return getDateMatcher().matches(o);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>         return getStringMatcher().matches(o);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      }<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span>      private IMatcher getNumberMatcher() {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>         if (numberMatcher == null)<a name="line.434"></a>
+<span class="sourceLineNo">435</span>            numberMatcher = new NumberMatcher(searchPattern);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>         return numberMatcher;<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>      private IMatcher getStringMatcher() {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>         if (stringMatcher == null)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>            stringMatcher = new StringMatcher(searchPattern, ignor

<TRUNCATED>


[10/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/ObjectList.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/ObjectList.html b/content/site/apidocs/src-html/org/apache/juneau/ObjectList.html
index 795d869..f905c5f 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/ObjectList.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/ObjectList.html
@@ -147,436 +147,440 @@
 <span class="sourceLineNo">139</span>      this(p == null ? BeanContext.DEFAULT.createSession() : p.getBeanContext().createSession());<a name="line.139"></a>
 <span class="sourceLineNo">140</span>      if (p == null)<a name="line.140"></a>
 <span class="sourceLineNo">141</span>         p = JsonParser.DEFAULT;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      if (s != null)<a name="line.142"></a>
-<span class="sourceLineNo">143</span>         p.parseIntoCollection(s, this, session.object());<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>    * Shortcut for &lt;code&gt;&lt;jk&gt;new&lt;/jk&gt; ObjectList(String,JsonParser.&lt;jsf&gt;DEFAULT&lt;/jsf&gt;);&lt;/code&gt;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    *<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    * @param s The string being parsed.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   public ObjectList(CharSequence s) throws ParseException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this(s, null);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   }<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>   /**<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    * Construct a JSON array directly from a reader using the specified parser.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    *<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    * @param r The reader to read from.  Will automatically be wrapped in a {@link BufferedReader} if it isn't already a BufferedReader.<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    * @param p The parser to use to parse the input.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    * @throws IOException If a problem occurred trying to read from the reader.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    */<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   public ObjectList(Reader r, Parser p) throws ParseException, IOException {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      this(p == null ? BeanContext.DEFAULT.createSession() : p.getBeanContext().createSession());<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      parseReader(r, p);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   }<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>   /**<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    * Shortcut for &lt;code&gt;&lt;jk&gt;new&lt;/jk&gt; ObjectList(reader, JsonParser.&lt;jsf&gt;DEFAULT&lt;/jsf&gt;)&lt;/code&gt;.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    *<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    * @param r The reader to read from.  The reader will be wrapped in a {@link BufferedReader} if it isn't already.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    * @throws IOException If a problem occurred trying to read from the reader.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   public ObjectList(Reader r) throws ParseException, IOException {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      this(BeanContext.DEFAULT.createSession());<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      parseReader(r, JsonParser.DEFAULT);<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>   private void parseReader(Reader r, Parser p) throws ParseException {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      if (p == null)<a name="line.182"></a>
-<span class="sourceLineNo">183</span>         p = JsonParser.DEFAULT;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      p.parseIntoCollection(r, this, session.object());<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>   /**<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    * Construct an empty JSON array. (i.e. an empty {@link LinkedList}).<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   public ObjectList() {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      this(BeanContext.DEFAULT.createSession());<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>    * Construct an empty JSON array with the specified bean context. (i.e. an empty {@link LinkedList}).<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    *<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    * @param session The bean context to associate with this object list for creating beans.<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    */<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   public ObjectList(BeanSession session) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      super();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      this.session = session;<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>   /**<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    * Construct a JSON array and fill it with the specified objects.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    *<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    * @param o A list of objects to add to this list.<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    */<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   public ObjectList(Object... o) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      super(Arrays.asList(o));<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   }<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>   /**<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    * Construct a JSON array and fill it with the specified collection of objects.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    *<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    * @param c A list of objects to add to this list.<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   public ObjectList(Collection&lt;?&gt; c) {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      super(c);<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>   /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    * Override the default bean session used for converting POJOs.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    * &lt;p&gt;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    * Default is {@link BeanContext#DEFAULT}, which is sufficient in most cases.<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    * &lt;p&gt;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    * Useful if you're serializing/parsing beans with transforms defined.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    *<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    * @param session The new bean session.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    * @return This object (for method chaining).<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    */<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   public ObjectList setBeanSession(BeanSession session) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      this.session = session;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      return this;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>   /**<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    * Convenience method for adding multiple objects to this list.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    * @param o The objects to add to the list.<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    * @return This object (for method chaining).<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    */<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   public ObjectList append(Object...o) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      for (Object o2 : o)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>         add(o2);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      return this;<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>   /**<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    * Get the entry at the specified index, converted to the specified type (if possible).<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    * &lt;p&gt;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    * See {@link BeanSession#convertToType(Object, ClassMeta)} for the list of valid data conversions.<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    *<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    * @param type The type of object to convert the entry to.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    * @param index The index into this list.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    * @param &lt;T&gt; The type of object to convert the entry to.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    * @return The converted entry.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    */<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   public &lt;T&gt; T get(Class&lt;T&gt; type, int index) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      return session.convertToType(get(index), type);<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>   /**<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    * Shortcut for calling &lt;code&gt;get(String.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    *<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    * @param index The index.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    * @return The converted value.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   public String getString(int index) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      return get(String.class, index);<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>   /**<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    * Shortcut for calling &lt;code&gt;get(Integer.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    *<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    * @param index The index.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    * @return The converted value.<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    */<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   public Integer getInt(int index) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      return get(Integer.class, index);<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>   /**<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    * Shortcut for calling &lt;code&gt;get(Boolean.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    *<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    * @param index The index.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    * @return The converted value.<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    */<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   public Boolean getBoolean(int index) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      return get(Boolean.class, index);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>   /**<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    * Shortcut for calling &lt;code&gt;get(Long.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    *<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    * @param index The index.<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    * @return The converted value.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    */<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   public Long getLong(int index) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      return get(Long.class, index);<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>    * Shortcut for calling &lt;code&gt;get(Map.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    *<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    * @param index The index.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    * @return The converted value.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   public Map&lt;?,?&gt; getMap(int index) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      return get(Map.class, index);<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>    * Shortcut for calling &lt;code&gt;get(List.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    *<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    * @param index The index.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    * @return The converted value.<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   public List&lt;?&gt; getList(int index) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      return get(List.class, index);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>   }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>   /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    * Shortcut for calling &lt;code&gt;get(ObjectMap.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    *<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    * @param index The index.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    * @return The converted value.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    */<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   public ObjectMap getObjectMap(int index) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      return get(ObjectMap.class, index);<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>    * Shortcut for calling &lt;code&gt;get(ObjectList.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    *<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    * @param index The index.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    * @return The converted value.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    */<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   public ObjectList getObjectList(int index) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      return get(ObjectList.class, index);<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>    * Same as {@link #get(Class,int) get(Class,int)}, but the key is a slash-delimited<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    *    path used to traverse entries in this POJO.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    * &lt;p&gt;<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    * For example, the following code is equivalent:<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    * &lt;/p&gt;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    * &lt;p class='bcode'&gt;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    *    ObjectMap m = getObjectMap();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    *<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    *    &lt;jk&gt;long&lt;/jk&gt; l = m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).getObjectMap(&lt;js&gt;"0"&lt;/js&gt;).getLong(&lt;js&gt;"baz"&lt;/js&gt;);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    *<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    *    &lt;jk&gt;long&lt;/jk&gt; l = m.getAt(&lt;jk&gt;long&lt;/jk&gt;.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"foo/bar/0/baz"&lt;/js&gt;);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    * &lt;/p&gt;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    * &lt;p&gt;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    *<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    * @param &lt;T&gt; The class type.<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    * @param type The class type.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    * @param path The path to the entry.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    * @return The value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   public &lt;T&gt; T getAt(Class&lt;T&gt; type, String path) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      return getPojoRest().get(type, path);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   }<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>    * Same as {@link #set(int,Object) set(int,Object)}, but the key is a slash-delimited<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    *    path used to traverse entries in this POJO.<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    * &lt;p&gt;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    * For example, the following code is equivalent:<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    * &lt;/p&gt;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    * &lt;p class='bcode'&gt;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    *    ObjectMap m = getObjectMap();<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    *<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    *    m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).getObjectMap(&lt;js&gt;"0"&lt;/js&gt;).put(&lt;js&gt;"baz"&lt;/js&gt;, 123);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    *<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    *    m.putAt(&lt;js&gt;"foo/bar/0/baz"&lt;/js&gt;, 123);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    * &lt;/p&gt;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    * &lt;p&gt;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    *<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    * @param path The path to the entry.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    * @param o The new value.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    * @return The previous value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    */<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   public Object putAt(String path, Object o) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      return getPojoRest().put(path, o);<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>    * Similar to {@link #putAt(String,Object) putAt(String,Object)}, but used to append<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    *    to collections and arrays.<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    * &lt;p&gt;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    * For example, the following code is equivalent:<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    * &lt;/p&gt;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    * &lt;p class='bcode'&gt;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    *    ObjectMap m = getObjectMap();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    *<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    *    m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).append(123);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    *<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    *    m.postAt(&lt;js&gt;"foo/bar"&lt;/js&gt;, 123);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    * &lt;/p&gt;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    * &lt;p&gt;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    *<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    * @param path The path to the entry.<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    * @param o The new value.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    * @return The previous value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    */<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   public Object postAt(String path, Object o) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      return getPojoRest().post(path, o);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   }<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>   /**<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    * Similar to {@link #remove(int) remove(int)},but the key is a slash-delimited<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    *    path used to traverse entries in this POJO.<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    * &lt;p&gt;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    * For example, the following code is equivalent:<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    * &lt;/p&gt;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    * &lt;p class='bcode'&gt;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    *    ObjectMap m = getObjectMap();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    *<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    *    m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).getObjectMap(1).remove(&lt;js&gt;"baz"&lt;/js&gt;);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    *<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    *    m.deleteAt(&lt;js&gt;"foo/bar/0/baz"&lt;/js&gt;);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    * &lt;/p&gt;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    * &lt;p&gt;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    *<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    * @param path The path to the entry.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    * @return The previous value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    */<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   public Object deleteAt(String path) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      return getPojoRest().delete(path);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>   /**<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    * Creates an {@link Iterable} with elements of the specified child type.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    * &lt;p&gt;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    * Attempts to convert the child objects to the correct type if they aren't already the correct type.<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    * &lt;p&gt;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    * The &lt;code&gt;next()&lt;/code&gt; method on the returned iterator may throw a {@link InvalidDataConversionException} if<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    *    the next element cannot be converted to the specified type.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    * &lt;p&gt;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    * See {@link BeanSession#convertToType(Object, ClassMeta)} for a description of valid conversions.<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    *<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    * &lt;p class='bcode'&gt;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    *    &lt;jc&gt;// Iterate over a list of ObjectMaps.&lt;/jc&gt;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    *    ObjectList l = &lt;jk&gt;new&lt;/jk&gt; ObjectList(&lt;js&gt;"[{foo:'bar'},{baz:123}]"&lt;/js&gt;);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    *    for (ObjectMap m : l.elements(ObjectMap.&lt;jk&gt;class&lt;/jk&gt;)) {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    *       &lt;jc&gt;// Do something with m.&lt;/jc&gt;<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>    *    &lt;jc&gt;// Iterate over a list of ints.&lt;/jc&gt;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    *    ObjectList l = &lt;jk&gt;new&lt;/jk&gt; ObjectList(&lt;js&gt;"[1,2,3]"&lt;/js&gt;);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    *    for (Integer i : l.elements(Integer.&lt;jk&gt;class&lt;/jk&gt;)) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    *       &lt;jc&gt;// Do something with i.&lt;/jc&gt;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    *    }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    *<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    *    &lt;jc&gt;// Iterate over a list of beans.&lt;/jc&gt;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    *    &lt;jc&gt;// Automatically converts to beans.&lt;/jc&gt;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    *    ObjectList l = &lt;jk&gt;new&lt;/jk&gt; ObjectList(&lt;js&gt;"[{name:'John Smith',age:45}]"&lt;/js&gt;);<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    *    for (Person p : l.elements(Person.&lt;jk&gt;class&lt;/jk&gt;)) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    *       &lt;jc&gt;// Do something with p.&lt;/jc&gt;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    *    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    * &lt;/p&gt;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    *<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    * @param &lt;E&gt; The child object type.<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    * @param childType The child object type.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    * @return A new &lt;code&gt;Iterable&lt;/code&gt; object over this list.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    */<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   public &lt;E&gt; Iterable&lt;E&gt; elements(final Class&lt;E&gt; childType) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      final Iterator&lt;?&gt; i = iterator();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      return new Iterable&lt;E&gt;() {<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>         @Override /* Iterable */<a name="line.497"></a>
-<span class="sourceLineNo">498</span>         public Iterator&lt;E&gt; iterator() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>            return new Iterator&lt;E&gt;() {<a name="line.499"></a>
+<span class="sourceLineNo">142</span>      try {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>         if (s != null)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>            p.parseIntoCollection(s, this, session.object());<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      } catch (ParseException e) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>         throw new ParseException("Invalid input for {0} parser.\n---start---\n{1}\n---end---", p.getClass().getSimpleName(), s).initCause(e);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      }<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   }<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>   /**<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    * Shortcut for &lt;code&gt;&lt;jk&gt;new&lt;/jk&gt; ObjectList(String,JsonParser.&lt;jsf&gt;DEFAULT&lt;/jsf&gt;);&lt;/code&gt;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    *<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    * @param s The string being parsed.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    */<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   public ObjectList(CharSequence s) throws ParseException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      this(s, null);<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>    * Construct a JSON array directly from a reader using the specified parser.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    *<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    * @param r The reader to read from.  Will automatically be wrapped in a {@link BufferedReader} if it isn't already a BufferedReader.<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    * @param p The parser to use to parse the input.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    * @throws IOException If a problem occurred trying to read from the reader.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    */<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   public ObjectList(Reader r, Parser p) throws ParseException, IOException {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      this(p == null ? BeanContext.DEFAULT.createSession() : p.getBeanContext().createSession());<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      parseReader(r, p);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   }<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>   /**<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    * Shortcut for &lt;code&gt;&lt;jk&gt;new&lt;/jk&gt; ObjectList(reader, JsonParser.&lt;jsf&gt;DEFAULT&lt;/jsf&gt;)&lt;/code&gt;.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    *<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    * @param r The reader to read from.  The reader will be wrapped in a {@link BufferedReader} if it isn't already.<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    * @throws IOException If a problem occurred trying to read from the reader.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    */<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   public ObjectList(Reader r) throws ParseException, IOException {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      this(BeanContext.DEFAULT.createSession());<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      parseReader(r, JsonParser.DEFAULT);<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>   private void parseReader(Reader r, Parser p) throws ParseException {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      if (p == null)<a name="line.186"></a>
+<span class="sourceLineNo">187</span>         p = JsonParser.DEFAULT;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      p.parseIntoCollection(r, this, session.object());<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>   /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    * Construct an empty JSON array. (i.e. an empty {@link LinkedList}).<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    */<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   public ObjectList() {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      this(BeanContext.DEFAULT.createSession());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   }<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>   /**<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    * Construct an empty JSON array with the specified bean context. (i.e. an empty {@link LinkedList}).<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    *<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    * @param session The bean context to associate with this object list for creating beans.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    */<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   public ObjectList(BeanSession session) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      super();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      this.session = session;<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>    * Construct a JSON array and fill it with the specified objects.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    *<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    * @param o A list of objects to add to this list.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    */<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   public ObjectList(Object... o) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      super(Arrays.asList(o));<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>   /**<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    * Construct a JSON array and fill it with the specified collection of objects.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    *<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    * @param c A list of objects to add to this list.<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    */<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   public ObjectList(Collection&lt;?&gt; c) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      super(c);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>   /**<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    * Override the default bean session used for converting POJOs.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    * &lt;p&gt;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    * Default is {@link BeanContext#DEFAULT}, which is sufficient in most cases.<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    * &lt;p&gt;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    * Useful if you're serializing/parsing beans with transforms defined.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    *<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    * @param session The new bean session.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    * @return This object (for method chaining).<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   public ObjectList setBeanSession(BeanSession session) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      this.session = session;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return this;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>   /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    * Convenience method for adding multiple objects to this list.<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    * @param o The objects to add to the list.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    * @return This object (for method chaining).<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    */<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   public ObjectList append(Object...o) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      for (Object o2 : o)<a name="line.247"></a>
+<span class="sourceLineNo">248</span>         add(o2);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return this;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   }<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>   /**<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    * Get the entry at the specified index, converted to the specified type (if possible).<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    * &lt;p&gt;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    * See {@link BeanSession#convertToType(Object, ClassMeta)} for the list of valid data conversions.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    *<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    * @param type The type of object to convert the entry to.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    * @param index The index into this list.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    * @param &lt;T&gt; The type of object to convert the entry to.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    * @return The converted entry.<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   public &lt;T&gt; T get(Class&lt;T&gt; type, int index) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      return session.convertToType(get(index), type);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>   /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    * Shortcut for calling &lt;code&gt;get(String.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    *<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    * @param index The index.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    * @return The converted value.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    */<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   public String getString(int index) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      return get(String.class, index);<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>    * Shortcut for calling &lt;code&gt;get(Integer.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    *<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    * @param index The index.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    * @return The converted value.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    */<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   public Integer getInt(int index) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      return get(Integer.class, index);<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>   /**<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    * Shortcut for calling &lt;code&gt;get(Boolean.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    *<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    * @param index The index.<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    * @return The converted value.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    */<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   public Boolean getBoolean(int index) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      return get(Boolean.class, index);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>   /**<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    * Shortcut for calling &lt;code&gt;get(Long.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    *<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    * @param index The index.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    * @return The converted value.<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    */<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   public Long getLong(int index) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      return get(Long.class, index);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>   /**<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    * Shortcut for calling &lt;code&gt;get(Map.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    *<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    * @param index The index.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    * @return The converted value.<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    */<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   public Map&lt;?,?&gt; getMap(int index) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      return get(Map.class, index);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   }<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>   /**<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    * Shortcut for calling &lt;code&gt;get(List.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    *<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    * @param index The index.<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    * @return The converted value.<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    */<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   public List&lt;?&gt; getList(int index) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      return get(List.class, index);<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>    * Shortcut for calling &lt;code&gt;get(ObjectMap.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    *<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    * @param index The index.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    * @return The converted value.<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    */<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   public ObjectMap getObjectMap(int index) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      return get(ObjectMap.class, index);<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>   /**<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    * Shortcut for calling &lt;code&gt;get(ObjectList.&lt;jk&gt;class&lt;/jk&gt;, index)&lt;/code&gt;.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    *<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    * @param index The index.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    * @return The converted value.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    */<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   public ObjectList getObjectList(int index) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      return get(ObjectList.class, index);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   }<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>   /**<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    * Same as {@link #get(Class,int) get(Class,int)}, but the key is a slash-delimited<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    *    path used to traverse entries in this POJO.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    * &lt;p&gt;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    * For example, the following code is equivalent:<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    * &lt;/p&gt;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    * &lt;p class='bcode'&gt;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    *    ObjectMap m = getObjectMap();<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    *<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    *    &lt;jk&gt;long&lt;/jk&gt; l = m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).getObjectMap(&lt;js&gt;"0"&lt;/js&gt;).getLong(&lt;js&gt;"baz"&lt;/js&gt;);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    *<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    *    &lt;jk&gt;long&lt;/jk&gt; l = m.getAt(&lt;jk&gt;long&lt;/jk&gt;.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"foo/bar/0/baz"&lt;/js&gt;);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    * &lt;/p&gt;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    * &lt;p&gt;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    *<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    * @param &lt;T&gt; The class type.<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    * @param type The class type.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    * @param path The path to the entry.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    * @return The value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   public &lt;T&gt; T getAt(Class&lt;T&gt; type, String path) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      return getPojoRest().get(type, path);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   }<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>   /**<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    * Same as {@link #set(int,Object) set(int,Object)}, but the key is a slash-delimited<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    *    path used to traverse entries in this POJO.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    * &lt;p&gt;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    * For example, the following code is equivalent:<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    * &lt;/p&gt;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    * &lt;p class='bcode'&gt;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    *    ObjectMap m = getObjectMap();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    *<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    *    m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).getObjectMap(&lt;js&gt;"0"&lt;/js&gt;).put(&lt;js&gt;"baz"&lt;/js&gt;, 123);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    *<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    *    m.putAt(&lt;js&gt;"foo/bar/0/baz"&lt;/js&gt;, 123);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    * &lt;/p&gt;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    * &lt;p&gt;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    *<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    * @param path The path to the entry.<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    * @param o The new value.<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    * @return The previous value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    */<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   public Object putAt(String path, Object o) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      return getPojoRest().put(path, o);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>   /**<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    * Similar to {@link #putAt(String,Object) putAt(String,Object)}, but used to append<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    *    to collections and arrays.<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    * &lt;p&gt;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    * For example, the following code is equivalent:<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    * &lt;/p&gt;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    * &lt;p class='bcode'&gt;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    *    ObjectMap m = getObjectMap();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    *<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    *    m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).append(123);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    *<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    *    m.postAt(&lt;js&gt;"foo/bar"&lt;/js&gt;, 123);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    * &lt;/p&gt;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    * &lt;p&gt;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    *<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    * @param path The path to the entry.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    * @param o The new value.<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    * @return The previous value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    */<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   public Object postAt(String path, Object o) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      return getPojoRest().post(path, o);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>   /**<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    * Similar to {@link #remove(int) remove(int)},but the key is a slash-delimited<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    *    path used to traverse entries in this POJO.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    * &lt;p&gt;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    * For example, the following code is equivalent:<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    * &lt;/p&gt;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    * &lt;p class='bcode'&gt;<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    *    ObjectMap m = getObjectMap();<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    *<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    *    m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).getObjectMap(1).remove(&lt;js&gt;"baz"&lt;/js&gt;);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    *<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    *    m.deleteAt(&lt;js&gt;"foo/bar/0/baz"&lt;/js&gt;);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    * &lt;/p&gt;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    * &lt;p&gt;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    *<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    * @param path The path to the entry.<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    * @return The previous value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    */<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   public Object deleteAt(String path) {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      return getPojoRest().delete(path);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   }<a name="line.459"></a>
+<span class="sourceLineNo">460</span><a name="line.460"></a>
+<span class="sourceLineNo">461</span>   /**<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    * Creates an {@link Iterable} with elements of the specified child type.<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    * &lt;p&gt;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    * Attempts to convert the child objects to the correct type if they aren't already the correct type.<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    * &lt;p&gt;<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    * The &lt;code&gt;next()&lt;/code&gt; method on the returned iterator may throw a {@link InvalidDataConversionException} if<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    *    the next element cannot be converted to the specified type.<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    * &lt;p&gt;<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    * See {@link BeanSession#convertToType(Object, ClassMeta)} for a description of valid conversions.<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    *<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    * &lt;p class='bcode'&gt;<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    *    &lt;jc&gt;// Iterate over a list of ObjectMaps.&lt;/jc&gt;<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    *    ObjectList l = &lt;jk&gt;new&lt;/jk&gt; ObjectList(&lt;js&gt;"[{foo:'bar'},{baz:123}]"&lt;/js&gt;);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    *    for (ObjectMap m : l.elements(ObjectMap.&lt;jk&gt;class&lt;/jk&gt;)) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    *       &lt;jc&gt;// Do something with m.&lt;/jc&gt;<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    *    }<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    *<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    *    &lt;jc&gt;// Iterate over a list of ints.&lt;/jc&gt;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    *    ObjectList l = &lt;jk&gt;new&lt;/jk&gt; ObjectList(&lt;js&gt;"[1,2,3]"&lt;/js&gt;);<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    *    for (Integer i : l.elements(Integer.&lt;jk&gt;class&lt;/jk&gt;)) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    *       &lt;jc&gt;// Do something with i.&lt;/jc&gt;<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>    *    &lt;jc&gt;// Iterate over a list of beans.&lt;/jc&gt;<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    *    &lt;jc&gt;// Automatically converts to beans.&lt;/jc&gt;<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    *    ObjectList l = &lt;jk&gt;new&lt;/jk&gt; ObjectList(&lt;js&gt;"[{name:'John Smith',age:45}]"&lt;/js&gt;);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    *    for (Person p : l.elements(Person.&lt;jk&gt;class&lt;/jk&gt;)) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    *       &lt;jc&gt;// Do something with p.&lt;/jc&gt;<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    *    }<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    * &lt;/p&gt;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    *<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    * @param &lt;E&gt; The child object type.<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    * @param childType The child object type.<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    * @return A new &lt;code&gt;Iterable&lt;/code&gt; object over this list.<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    */<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   public &lt;E&gt; Iterable&lt;E&gt; elements(final Class&lt;E&gt; childType) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      final Iterator&lt;?&gt; i = iterator();<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      return new Iterable&lt;E&gt;() {<a name="line.499"></a>
 <span class="sourceLineNo">500</span><a name="line.500"></a>
-<span class="sourceLineNo">501</span>               @Override /* Iterator */<a name="line.501"></a>
-<span class="sourceLineNo">502</span>               public boolean hasNext() {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>                  return i.hasNext();<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 /* Iterator */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>               public E next() {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>                  return session.convertToType(i.next(), childType);<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>               @Override /* Iterator */<a name="line.511"></a>
-<span class="sourceLineNo">512</span>               public void remove() {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>                  i.remove();<a name="line.513"></a>
-<span class="sourceLineNo">514</span>               }<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>            };<a name="line.516"></a>
-<span class="sourceLineNo">517</span>         }<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      };<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>   /**<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    * Returns the {@link ClassMeta} of the class of the object at the specified index.<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    *<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    * @param index An index into this list, zero-based.<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    * @return The data type of the object at the specified index, or &lt;jk&gt;null&lt;/jk&gt; if the value is null.<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    */<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   public ClassMeta&lt;?&gt; getClassMeta(int index) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      return session.getClassMetaForObject(get(index));<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   }<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>   private PojoRest getPojoRest() {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      if (pojoRest == null)<a name="line.532"></a>
-<span class="sourceLineNo">533</span>         pojoRest = new PojoRest(this);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      return pojoRest;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   }<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span>   /**<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    * Serialize this array to a string using the specified serializer.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    *<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    * @param serializer The serializer to use to convert this object to a string.<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    * @return This object as a serialized string.<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    * @throws SerializeException If a problem occurred trying to convert the output.<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    */<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   public String toString(WriterSerializer serializer) throws SerializeException {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      return serializer.serialize(this);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>   /**<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    * Serialize this array to JSON using the {@link JsonSerializer#DEFAULT} serializer.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   @Override /* Object */<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   public String toString() {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      try {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>         return this.toString(JsonSerializer.DEFAULT_LAX);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      } catch (SerializeException e) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>         return e.getLocalizedMessage();<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      }<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>   /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    * Convenience method for serializing this ObjectList to the specified Writer using<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    * the JsonSerializer.DEFAULT serializer.<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    *<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    * @param w The writer to send the serialized contents of this object.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    * @throws IOException If a problem occurred trying to write to the writer.<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    * @throws SerializeException If a problem occurred trying to convert the output.<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   public void serializeTo(Writer w) throws IOException, SerializeException {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      JsonSerializer.DEFAULT.serialize(this);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   }<a name="line.570"></a>
-<span class="sourceLineNo">571</span>}<a name="line.571"></a>
+<span class="sourceLineNo">501</span>         @Override /* Iterable */<a name="line.501"></a>
+<span class="sourceLineNo">502</span>         public Iterator&lt;E&gt; iterator() {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>            return new Iterator&lt;E&gt;() {<a name="line.503"></a>
+<span class="sourceLineNo">504</span><a name="line.504"></a>
+<span class="sourceLineNo">505</span>               @Override /* Iterator */<a name="line.505"></a>
+<span class="sourceLineNo">506</span>               public boolean hasNext() {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>                  return i.hasNext();<a name="line.507"></a>
+<span class="sourceLineNo">508</span>               }<a name="line.508"></a>
+<span class="sourceLineNo">509</span><a name="line.509"></a>
+<span class="sourceLineNo">510</span>               @Override /* Iterator */<a name="line.510"></a>
+<span class="sourceLineNo">511</span>               public E next() {<a name="line.511"></a>
+<span class="sourceLineNo">512</span>                  return session.convertToType(i.next(), childType);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>               }<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span>               @Override /* Iterator */<a name="line.515"></a>
+<span class="sourceLineNo">516</span>               public void remove() {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>                  i.remove();<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>         }<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      };<a name="line.522"></a>
+<span class="sourceLineNo">523</span>   }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>   /**<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    * Returns the {@link ClassMeta} of the class of the object at the specified index.<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    *<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    * @param index An index into this list, zero-based.<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    * @return The data type of the object at the specified index, or &lt;jk&gt;null&lt;/jk&gt; if the value is null.<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    */<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   public ClassMeta&lt;?&gt; getClassMeta(int index) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      return session.getClassMetaForObject(get(index));<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   }<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>   private PojoRest getPojoRest() {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      if (pojoRest == null)<a name="line.536"></a>
+<span class="sourceLineNo">537</span>         pojoRest = new PojoRest(this);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      return pojoRest;<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   }<a name="line.539"></a>
+<span class="sourceLineNo">540</span><a name="line.540"></a>
+<span class="sourceLineNo">541</span>   /**<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    * Serialize this array to a string using the specified serializer.<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    *<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    * @param serializer The serializer to use to convert this object to a string.<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    * @return This object as a serialized string.<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    * @throws SerializeException If a problem occurred trying to convert the output.<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    */<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   public String toString(WriterSerializer serializer) throws SerializeException {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      return serializer.serialize(this);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   }<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>    * Serialize this array to JSON using the {@link JsonSerializer#DEFAULT} serializer.<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    */<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   @Override /* Object */<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   public String toString() {<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      try {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>         return this.toString(JsonSerializer.DEFAULT_LAX);<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      } catch (SerializeException e) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>         return e.getLocalizedMessage();<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><a name="line.563"></a>
+<span class="sourceLineNo">564</span>   /**<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    * Convenience method for serializing this ObjectList to the specified Writer using<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    * the JsonSerializer.DEFAULT serializer.<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    *<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    * @param w The writer to send the serialized contents of this object.<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    * @throws IOException If a problem occurred trying to write to the writer.<a name="line.569"></a>
+<span class="sourceLineNo">570</span>    * @throws SerializeException If a problem occurred trying to convert the output.<a name="line.570"></a>
+<span class="sourceLineNo">571</span>    */<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   public void serializeTo(Writer w) throws IOException, SerializeException {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      JsonSerializer.DEFAULT.serialize(this);<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   }<a name="line.574"></a>
+<span class="sourceLineNo">575</span>}<a name="line.575"></a>
 
 
 


[16/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/RequestFormData.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RequestFormData.html b/content/site/apidocs/org/apache/juneau/rest/RequestFormData.html
index fafafc4..1b2b0d7 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RequestFormData.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RequestFormData.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,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -233,30 +233,56 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 </td>
 </tr>
 <tr id="i6" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestFormData.html#getBoolean-java.lang.String-">getBoolean</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to a boolean.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestFormData.html#getBoolean-java.lang.String-boolean-">getBoolean</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+          boolean&nbsp;def)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to a boolean.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestFormData.html#getInt-java.lang.String-">getInt</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to an integer.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestFormData.html#getInt-java.lang.String-int-">getInt</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+      int&nbsp;def)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to an integer.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestFormData.html#getFirst-java.lang.String-">getFirst</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-">getString</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Returns a form data parameter value.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestFormData.html#getFirst-java.lang.String-java.lang.String-">getFirst</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
-        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</code>
-<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getFirst-java.lang.String-"><code>getFirst(String)</code></a> except returns a default value if <jk>null</jk> or empty.</div>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-java.lang.String-">getString</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-"><code>getString(String)</code></a> except returns a default value if <jk>null</jk> or empty.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestFormData.html#put-java.lang.String-java.lang.Object-">put</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
 <div class="block">Sets a request form data parameter value.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestFormData.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestFormData.html#toString-boolean-">toString</a></span>(boolean&nbsp;sorted)</code>
 <div class="block">Converts the form data parameters to a readable string.</div>
@@ -363,13 +389,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 </dl>
 </li>
 </ul>
-<a name="getFirst-java.lang.String-">
+<a name="getString-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFirst</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.97">getFirst</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<h4>getString</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.97">getString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns a form data parameter value.
  <p>
  Parameter lookup is case-insensitive (consistent with WAS, but differs from Tomcat).
@@ -394,21 +420,89 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 </dl>
 </li>
 </ul>
-<a name="getFirst-java.lang.String-java.lang.String-">
+<a name="getString-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getString</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.118">getString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-"><code>getString(String)</code></a> except returns a default value if <jk>null</jk> or empty.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The form data parameter name.</dd>
+<dd><code>def</code> - The default value.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The parameter value, or the default value if parameter does not exist or is <jk>null</jk> or empty.</dd>
+</dl>
+</li>
+</ul>
+<a name="getInt-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInt</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.129">getInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to an integer.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The form data parameter name.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The parameter value, or <code>0</code> if parameter does not exist or is <jk>null</jk> or empty.</dd>
+</dl>
+</li>
+</ul>
+<a name="getInt-java.lang.String-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInt</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.140">getInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+                  int&nbsp;def)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to an integer.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The form data parameter name.</dd>
+<dd><code>def</code> - The default value.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The parameter value, or the default value if parameter does not exist or is <jk>null</jk> or empty.</dd>
+</dl>
+</li>
+</ul>
+<a name="getBoolean-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBoolean</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.151">getBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to a boolean.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The form data parameter name.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The parameter value, or <jk>false</jk> if parameter does not exist or is <jk>null</jk> or empty.</dd>
+</dl>
+</li>
+</ul>
+<a name="getBoolean-java.lang.String-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFirst</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.118">getFirst</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
-                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</pre>
-<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getFirst-java.lang.String-"><code>getFirst(String)</code></a> except returns a default value if <jk>null</jk> or empty.</div>
+<h4>getBoolean</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.162">getBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+                          boolean&nbsp;def)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to a boolean.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>name</code> - The form data parameter name.</dd>
 <dd><code>def</code> - The default value.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>The parameter value, or the default value if <jk>null</jk> or empty.</dd>
+<dd>The parameter value, or the default value if parameter does not exist or is <jk>null</jk> or empty.</dd>
 </dl>
 </li>
 </ul>
@@ -418,7 +512,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.156">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.200">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type)
           throws <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
 <div class="block">Returns the specified form data parameter value converted to a POJO using the
@@ -467,7 +561,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.170">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.214">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  T&nbsp;def,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type)
           throws <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
@@ -492,7 +586,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getAll</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.185">getAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.229">getAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type)
              throws <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
 <div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestFormData.html#get-java.lang.String-java.lang.Class-"><code>get(String, Class)</code></a> except for use on multi-part parameters
@@ -516,7 +610,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.223">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.267">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  <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>&nbsp;type,
                  <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>...&nbsp;args)
           throws <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
@@ -564,7 +658,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getAll</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.242">getAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.286">getAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Type.html?is-external=true" title="class or interface in java.lang.reflect">Type</a>&nbsp;type,
                     <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>...&nbsp;args)
              throws <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
@@ -593,7 +687,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.299">toString</a>(boolean&nbsp;sorted)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.343">toString</a>(boolean&nbsp;sorted)</pre>
 <div class="block">Converts the form data parameters to a readable string.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -609,7 +703,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.309">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestFormData.html#line.353">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html?is-external=true#toString--" title="class or interface in java.util">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html?is-external=true" title="class or interface in java.util">AbstractMap</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&gt;</code></dd>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/RequestHeaders.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RequestHeaders.html b/content/site/apidocs/org/apache/juneau/rest/RequestHeaders.html
index 872d833..4f96e6a 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RequestHeaders.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RequestHeaders.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -224,54 +224,54 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 </td>
 </tr>
 <tr id="i9" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getBoolean-java.lang.String-">getBoolean</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to a boolean.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getBoolean-java.lang.String-boolean-">getBoolean</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+          boolean&nbsp;def)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to a boolean.</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/CacheControl.html" title="class in org.apache.juneau.http">CacheControl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getCacheControl--">getCacheControl</a></span>()</code>
 <div class="block">Returns the <code>Cache-Control</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/Connection.html" title="class in org.apache.juneau.http">Connection</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getConnection--">getConnection</a></span>()</code>
 <div class="block">Returns the <code>Connection</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/ContentLength.html" title="class in org.apache.juneau.http">ContentLength</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getContentLength--">getContentLength</a></span>()</code>
 <div class="block">Returns the <code>Content-Length</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/ContentType.html" title="class in org.apache.juneau.http">ContentType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getContentType--">getContentType</a></span>()</code>
 <div class="block">Returns the <code>Content-Type</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/Date.html" title="class in org.apache.juneau.http">Date</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getDate--">getDate</a></span>()</code>
 <div class="block">Returns the <code>Date</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/Expect.html" title="class in org.apache.juneau.http">Expect</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getExpect--">getExpect</a></span>()</code>
 <div class="block">Returns the <code>Expect</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
-<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getFirst-java.lang.String-">getFirst</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
-<div class="block">Returns the specified header value, or <jk>null</jk> if the header doesn't exist.</div>
-</td>
-</tr>
-<tr id="i16" class="altColor">
-<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getFirst-java.lang.String-java.lang.String-">getFirst</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
-        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</code>
-<div class="block">Returns the specified header value, or a default value if the header doesn't exist.</div>
-</td>
-</tr>
 <tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/From.html" title="class in org.apache.juneau.http">From</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getFrom--">getFrom</a></span>()</code>
@@ -315,102 +315,128 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 </td>
 </tr>
 <tr id="i24" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getInt-java.lang.String-">getInt</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to an integer.</div>
+</td>
+</tr>
+<tr id="i25" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getInt-java.lang.String-int-">getInt</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+      int&nbsp;def)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to an integer.</div>
+</td>
+</tr>
+<tr id="i26" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/MaxForwards.html" title="class in org.apache.juneau.http">MaxForwards</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getMaxForwards--">getMaxForwards</a></span>()</code>
 <div class="block">Returns the <code>Max-Forwards</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/Pragma.html" title="class in org.apache.juneau.http">Pragma</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getPragma--">getPragma</a></span>()</code>
 <div class="block">Returns the <code>Pragma</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/ProxyAuthorization.html" title="class in org.apache.juneau.http">ProxyAuthorization</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getProxyAuthorization--">getProxyAuthorization</a></span>()</code>
 <div class="block">Returns the <code>Proxy-Authorization</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/Range.html" title="class in org.apache.juneau.http">Range</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getRange--">getRange</a></span>()</code>
 <div class="block">Returns the <code>Range</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/Referer.html" title="class in org.apache.juneau.http">Referer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getReferer--">getReferer</a></span>()</code>
 <div class="block">Returns the <code>Referer</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i31" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-">getString</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
+<div class="block">Returns the specified header value, or <jk>null</jk> if the header doesn't exist.</div>
+</td>
+</tr>
+<tr id="i32" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-java.lang.String-">getString</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</code>
+<div class="block">Returns the specified header value, or a default value if the header doesn't exist.</div>
+</td>
+</tr>
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/TE.html" title="class in org.apache.juneau.http">TE</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getTE--">getTE</a></span>()</code>
 <div class="block">Returns the <code>TE</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util">TimeZone</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getTimeZone--">getTimeZone</a></span>()</code>
 <div class="block">Returns the <code>Time-Zone</code> header value on the request if there is one.</div>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/Upgrade.html" title="class in org.apache.juneau.http">Upgrade</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getUpgrade--">getUpgrade</a></span>()</code>
 <div class="block">Returns the <code>Upgrade</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/UserAgent.html" title="class in org.apache.juneau.http">UserAgent</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getUserAgent--">getUserAgent</a></span>()</code>
 <div class="block">Returns the <code>User-Agent</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/Via.html" title="class in org.apache.juneau.http">Via</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getVia--">getVia</a></span>()</code>
 <div class="block">Returns the <code>Via</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/http/Warning.html" title="class in org.apache.juneau.http">Warning</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getWarning--">getWarning</a></span>()</code>
 <div class="block">Returns the <code>Warning</code> header on the request.</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#put-java.lang.String-java.util.Enumeration-">put</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
    <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Enumeration.html?is-external=true" title="class or interface in java.util">Enumeration</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;values)</code>
 <div class="block">Adds a set of header values to this object.</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#put-java.lang.String-java.lang.Object-">put</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
 <div class="block">Sets a request header value.</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#subset-java.lang.String...-">subset</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;headers)</code>
 <div class="block">Returns a copy of this object, but only with the specified header names copied.</div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#subset-java.lang.String-">subset</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;headers)</code>
 <div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#subset-java.lang.String...-"><code>subset(String...)</code></a>, but allows you to specify header names as a comma-delimited list.</div>
 </td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestHeaders.html#toString-boolean-">toString</a></span>(boolean&nbsp;sorted)</code>
 <div class="block">Converts the headers to a readable string.</div>
@@ -495,13 +521,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 </dl>
 </li>
 </ul>
-<a name="getFirst-java.lang.String-">
+<a name="getString-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFirst</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.107">getFirst</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<h4>getString</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.107">getString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the specified header value, or <jk>null</jk> if the header doesn't exist.
  <p>
  If <code>allowHeaderParams</code> init parameter is <jk>true</jk>, then first looks for <code>&amp;HeaderName=x</code> in the URL query string.
@@ -514,14 +540,14 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 </dl>
 </li>
 </ul>
-<a name="getFirst-java.lang.String-java.lang.String-">
+<a name="getString-java.lang.String-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFirst</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.127">getFirst</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
-                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</pre>
+<h4>getString</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.127">getString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</pre>
 <div class="block">Returns the specified header value, or a default value if the header doesn't exist.
  <p>
  If <code>allowHeaderParams</code> init parameter is <jk>true</jk>, then first looks for <code>&amp;HeaderName=x</code> in the URL query string.</div>
@@ -534,13 +560,81 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 </dl>
 </li>
 </ul>
+<a name="getInt-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInt</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.138">getInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to an integer.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The HTTP header name.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The header value, or the default value if the header isn't present.</dd>
+</dl>
+</li>
+</ul>
+<a name="getInt-java.lang.String-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInt</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.149">getInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+                  int&nbsp;def)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to an integer.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The HTTP header name.</dd>
+<dd><code>def</code> - The default value to return if the header value isn't found.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The header value, or the default value if the header isn't present.</dd>
+</dl>
+</li>
+</ul>
+<a name="getBoolean-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBoolean</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.160">getBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to a boolean.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The HTTP header name.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The header value, or the default value if the header isn't present.</dd>
+</dl>
+</li>
+</ul>
+<a name="getBoolean-java.lang.String-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBoolean</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.171">getBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+                          boolean&nbsp;def)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to a boolean.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The HTTP header name.</dd>
+<dd><code>def</code> - The default value to return if the header value isn't found.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The header value, or the default value if the header isn't present.</dd>
+</dl>
+</li>
+</ul>
 <a name="put-java.lang.String-java.lang.Object-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>put</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.138">put</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.182">put</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
 <div class="block">Sets a request header value.</div>
 <dl>
@@ -556,7 +650,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.162">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.206">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type)</pre>
 <div class="block">Returns the specified header value converted to a POJO.
  <p>
@@ -590,7 +684,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.176">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.220">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  T&nbsp;def,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type)</pre>
 <div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#get-java.lang.String-java.lang.Class-"><code>get(String, Class)</code></a> but returns a default value if not found.</div>
@@ -612,7 +706,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.206">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.250">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  <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>&nbsp;type,
                  <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>...&nbsp;args)
           throws <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
@@ -649,7 +743,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>subset</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.216">subset</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;headers)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.260">subset</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;headers)</pre>
 <div class="block">Returns a copy of this object, but only with the specified header names copied.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -665,7 +759,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>subset</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.229">subset</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;headers)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.273">subset</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;headers)</pre>
 <div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#subset-java.lang.String...-"><code>subset(String...)</code></a>, but allows you to specify header names as a comma-delimited list.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -681,7 +775,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getAccept</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Accept.html" title="class in org.apache.juneau.http">Accept</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.246">getAccept</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Accept.html" title="class in org.apache.juneau.http">Accept</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.290">getAccept</a>()</pre>
 <div class="block">Returns the <code>Accept</code> header on the request.
  <p>
  Content-Types that are acceptable for the response.
@@ -702,7 +796,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getAcceptCharset</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/AcceptCharset.html" title="class in org.apache.juneau.http">AcceptCharset</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.262">getAcceptCharset</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/AcceptCharset.html" title="class in org.apache.juneau.http">AcceptCharset</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.306">getAcceptCharset</a>()</pre>
 <div class="block">Returns the <code>Accept-Charset</code> header on the request.
  <p>
  Character sets that are acceptable.
@@ -723,7 +817,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getAcceptEncoding</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/AcceptEncoding.html" title="class in org.apache.juneau.http">AcceptEncoding</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.278">getAcceptEncoding</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/AcceptEncoding.html" title="class in org.apache.juneau.http">AcceptEncoding</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.322">getAcceptEncoding</a>()</pre>
 <div class="block">Returns the <code>Accept-Encoding</code> header on the request.
  <p>
  List of acceptable encodings.
@@ -744,7 +838,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getAcceptLanguage</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/AcceptLanguage.html" title="class in org.apache.juneau.http">AcceptLanguage</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.294">getAcceptLanguage</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/AcceptLanguage.html" title="class in org.apache.juneau.http">AcceptLanguage</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.338">getAcceptLanguage</a>()</pre>
 <div class="block">Returns the <code>Accept-Language</code> header on the request.
  <p>
  List of acceptable human languages for response.
@@ -765,7 +859,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getAuthorization</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Authorization.html" title="class in org.apache.juneau.http">Authorization</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.310">getAuthorization</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Authorization.html" title="class in org.apache.juneau.http">Authorization</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.354">getAuthorization</a>()</pre>
 <div class="block">Returns the <code>Authorization</code> header on the request.
  <p>
  Authentication credentials for HTTP authentication.
@@ -786,7 +880,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCacheControl</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/CacheControl.html" title="class in org.apache.juneau.http">CacheControl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.326">getCacheControl</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/CacheControl.html" title="class in org.apache.juneau.http">CacheControl</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.370">getCacheControl</a>()</pre>
 <div class="block">Returns the <code>Cache-Control</code> header on the request.
  <p>
  Used to specify directives that must be obeyed by all caching mechanisms along the request-response chain.
@@ -807,7 +901,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getConnection</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Connection.html" title="class in org.apache.juneau.http">Connection</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.343">getConnection</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Connection.html" title="class in org.apache.juneau.http">Connection</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.387">getConnection</a>()</pre>
 <div class="block">Returns the <code>Connection</code> header on the request.
  <p>
  Control options for the current connection and list of hop-by-hop request fields.
@@ -829,7 +923,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getContentLength</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/ContentLength.html" title="class in org.apache.juneau.http">ContentLength</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.359">getContentLength</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/ContentLength.html" title="class in org.apache.juneau.http">ContentLength</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.403">getContentLength</a>()</pre>
 <div class="block">Returns the <code>Content-Length</code> header on the request.
  <p>
  The length of the request body in octets (8-bit bytes).
@@ -850,7 +944,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getContentType</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/ContentType.html" title="class in org.apache.juneau.http">ContentType</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.375">getContentType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/ContentType.html" title="class in org.apache.juneau.http">ContentType</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.419">getContentType</a>()</pre>
 <div class="block">Returns the <code>Content-Type</code> header on the request.
  <p>
  The MIME type of the body of the request (used with POST and PUT requests).
@@ -871,7 +965,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getDate</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Date.html" title="class in org.apache.juneau.http">Date</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.391">getDate</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Date.html" title="class in org.apache.juneau.http">Date</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.435">getDate</a>()</pre>
 <div class="block">Returns the <code>Date</code> header on the request.
  <p>
  The date and time that the message was originated (in "HTTP-date" format as defined by RFC 7231 Date/Time Formats).
@@ -892,7 +986,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getExpect</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Expect.html" title="class in org.apache.juneau.http">Expect</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.407">getExpect</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Expect.html" title="class in org.apache.juneau.http">Expect</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.451">getExpect</a>()</pre>
 <div class="block">Returns the <code>Expect</code> header on the request.
  <p>
  Indicates that particular server behaviors are required by the client.
@@ -913,7 +1007,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getFrom</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/From.html" title="class in org.apache.juneau.http">From</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.423">getFrom</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/From.html" title="class in org.apache.juneau.http">From</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.467">getFrom</a>()</pre>
 <div class="block">Returns the <code>From</code> header on the request.
  <p>
  The email address of the user making the request.
@@ -934,7 +1028,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getHost</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Host.html" title="class in org.apache.juneau.http">Host</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.441">getHost</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Host.html" title="class in org.apache.juneau.http">Host</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.485">getHost</a>()</pre>
 <div class="block">Returns the <code>Host</code> header on the request.
  <p>
  The domain name of the server (for virtual hosting), and the TCP port number on which the server is listening.
@@ -957,7 +1051,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getIfMatch</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/IfMatch.html" title="class in org.apache.juneau.http">IfMatch</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.458">getIfMatch</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/IfMatch.html" title="class in org.apache.juneau.http">IfMatch</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.502">getIfMatch</a>()</pre>
 <div class="block">Returns the <code>If-Match</code> header on the request.
  <p>
  Only perform the action if the client supplied entity matches the same entity on the server.
@@ -979,7 +1073,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getIfModifiedSince</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/IfModifiedSince.html" title="class in org.apache.juneau.http">IfModifiedSince</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.474">getIfModifiedSince</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/IfModifiedSince.html" title="class in org.apache.juneau.http">IfModifiedSince</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.518">getIfModifiedSince</a>()</pre>
 <div class="block">Returns the <code>If-Modified-Since</code> header on the request.
  <p>
  Allows a 304 Not Modified to be returned if content is unchanged.
@@ -1000,7 +1094,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getIfNoneMatch</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/IfNoneMatch.html" title="class in org.apache.juneau.http">IfNoneMatch</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.490">getIfNoneMatch</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/IfNoneMatch.html" title="class in org.apache.juneau.http">IfNoneMatch</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.534">getIfNoneMatch</a>()</pre>
 <div class="block">Returns the <code>If-None-Match</code> header on the request.
  <p>
  Allows a 304 Not Modified to be returned if content is unchanged, see HTTP ETag.
@@ -1021,7 +1115,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getIfRange</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/IfRange.html" title="class in org.apache.juneau.http">IfRange</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.506">getIfRange</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/IfRange.html" title="class in org.apache.juneau.http">IfRange</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.550">getIfRange</a>()</pre>
 <div class="block">Returns the <code>If-Range</code> header on the request.
  <p>
  If the entity is unchanged, send me the part(s) that I am missing; otherwise, send me the entire new entity.
@@ -1042,7 +1136,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getIfUnmodifiedSince</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/IfUnmodifiedSince.html" title="class in org.apache.juneau.http">IfUnmodifiedSince</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.522">getIfUnmodifiedSince</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/IfUnmodifiedSince.html" title="class in org.apache.juneau.http">IfUnmodifiedSince</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.566">getIfUnmodifiedSince</a>()</pre>
 <div class="block">Returns the <code>If-Unmodified-Since</code> header on the request.
  <p>
  Only send the response if the entity has not been modified since a specific time.
@@ -1063,7 +1157,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxForwards</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/MaxForwards.html" title="class in org.apache.juneau.http">MaxForwards</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.538">getMaxForwards</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/MaxForwards.html" title="class in org.apache.juneau.http">MaxForwards</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.582">getMaxForwards</a>()</pre>
 <div class="block">Returns the <code>Max-Forwards</code> header on the request.
  <p>
  Limit the number of times the message can be forwarded through proxies or gateways.
@@ -1084,7 +1178,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getPragma</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Pragma.html" title="class in org.apache.juneau.http">Pragma</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.554">getPragma</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Pragma.html" title="class in org.apache.juneau.http">Pragma</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.598">getPragma</a>()</pre>
 <div class="block">Returns the <code>Pragma</code> header on the request.
  <p>
  Implementation-specific fields that may have various effects anywhere along the request-response chain.
@@ -1105,7 +1199,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getProxyAuthorization</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/ProxyAuthorization.html" title="class in org.apache.juneau.http">ProxyAuthorization</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.570">getProxyAuthorization</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/ProxyAuthorization.html" title="class in org.apache.juneau.http">ProxyAuthorization</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.614">getProxyAuthorization</a>()</pre>
 <div class="block">Returns the <code>Proxy-Authorization</code> header on the request.
  <p>
  Authorization credentials for connecting to a proxy.
@@ -1126,7 +1220,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getRange</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Range.html" title="class in org.apache.juneau.http">Range</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.586">getRange</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Range.html" title="class in org.apache.juneau.http">Range</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.630">getRange</a>()</pre>
 <div class="block">Returns the <code>Range</code> header on the request.
  <p>
  Request only part of an entity. Bytes are numbered from 0.
@@ -1147,7 +1241,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getReferer</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Referer.html" title="class in org.apache.juneau.http">Referer</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.602">getReferer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Referer.html" title="class in org.apache.juneau.http">Referer</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.646">getReferer</a>()</pre>
 <div class="block">Returns the <code>Referer</code> header on the request.
  <p>
  This is the address of the previous web page from which a link to the currently requested page was followed.
@@ -1168,7 +1262,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTE</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/TE.html" title="class in org.apache.juneau.http">TE</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.620">getTE</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/TE.html" title="class in org.apache.juneau.http">TE</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.664">getTE</a>()</pre>
 <div class="block">Returns the <code>TE</code> header on the request.
  <p>
  The transfer encodings the user agent is willing to accept: the same values as for the response header field
@@ -1191,7 +1285,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimeZone</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util">TimeZone</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.631">getTimeZone</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util">TimeZone</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.675">getTimeZone</a>()</pre>
 <div class="block">Returns the <code>Time-Zone</code> header value on the request if there is one.
  <p>
  Example: <js>"GMT"</js>.</div>
@@ -1207,7 +1301,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getUserAgent</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/UserAgent.html" title="class in org.apache.juneau.http">UserAgent</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.650">getUserAgent</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/UserAgent.html" title="class in org.apache.juneau.http">UserAgent</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.694">getUserAgent</a>()</pre>
 <div class="block">Returns the <code>User-Agent</code> header on the request.
  <p>
  The user agent string of the user agent.
@@ -1228,7 +1322,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getUpgrade</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Upgrade.html" title="class in org.apache.juneau.http">Upgrade</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.666">getUpgrade</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Upgrade.html" title="class in org.apache.juneau.http">Upgrade</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.710">getUpgrade</a>()</pre>
 <div class="block">Returns the <code>Upgrade</code> header on the request.
  <p>
  Ask the server to upgrade to another protocol.
@@ -1249,7 +1343,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getVia</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Via.html" title="class in org.apache.juneau.http">Via</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.682">getVia</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Via.html" title="class in org.apache.juneau.http">Via</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.726">getVia</a>()</pre>
 <div class="block">Returns the <code>Via</code> header on the request.
  <p>
  Informs the server of proxies through which the request was sent.
@@ -1270,7 +1364,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getWarning</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Warning.html" title="class in org.apache.juneau.http">Warning</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.698">getWarning</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/http/Warning.html" title="class in org.apache.juneau.http">Warning</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.742">getWarning</a>()</pre>
 <div class="block">Returns the <code>Warning</code> header on the request.
  <p>
  A general warning about possible problems with the entity body.
@@ -1291,7 +1385,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.708">toString</a>(boolean&nbsp;sorted)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.752">toString</a>(boolean&nbsp;sorted)</pre>
 <div class="block">Converts the headers to a readable string.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1307,7 +1401,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.718">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestHeaders.html#line.762">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html?is-external=true#toString--" title="class or interface in java.util">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html?is-external=true" title="class or interface in java.util">AbstractMap</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&gt;</code></dd>


[18/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/html/HtmlDocSerializerContext.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/html/HtmlDocSerializerContext.html b/content/site/apidocs/org/apache/juneau/html/HtmlDocSerializerContext.html
index 8fedb60..52485c5 100644
--- a/content/site/apidocs/org/apache/juneau/html/HtmlDocSerializerContext.html
+++ b/content/site/apidocs/org/apache/juneau/html/HtmlDocSerializerContext.html
@@ -598,7 +598,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>HTMLDOC_links</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.281">HTMLDOC_links</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.283">HTMLDOC_links</a></pre>
 <div class="block"><b>Configuration property:</b>  Page links.
  <p>
  <ul>
@@ -645,7 +645,9 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
       )
    )
    <jk>public class</jk> AddressBookResource <jk>extends</jk> RestServletJenaDefault {
- </p></div>
+ </p>
+ <p>
+ Values that start with <js>'&lt;'</js> are assumed to be HTML and rendered as-is.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.juneau.html.HtmlDocSerializerContext.HTMLDOC_links">Constant Field Values</a></dd>
@@ -658,7 +660,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>HTMLDOC_links_put</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.286">HTMLDOC_links_put</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.288">HTMLDOC_links_put</a></pre>
 <div class="block"><b>Configuration property:</b>  Add to the <a href="../../../../org/apache/juneau/html/HtmlDocSerializerContext.html#HTMLDOC_links"><code>HTMLDOC_links</code></a> property.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -672,7 +674,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>HTMLDOC_nav</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.315">HTMLDOC_nav</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.317">HTMLDOC_nav</a></pre>
 <div class="block"><b>Configuration property:</b>  Nav section contents.
  <p>
  <ul>
@@ -710,7 +712,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>HTMLDOC_aside</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.345">HTMLDOC_aside</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.347">HTMLDOC_aside</a></pre>
 <div class="block"><b>Configuration property:</b>  Aside section contents.
  <p>
  <ul>
@@ -749,7 +751,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>HTMLDOC_footer</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.373">HTMLDOC_footer</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.375">HTMLDOC_footer</a></pre>
 <div class="block"><b>Configuration property:</b>  Footer section contents.
  <p>
  <ul>
@@ -786,7 +788,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>HTMLDOC_noResultsMessage</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.399">HTMLDOC_noResultsMessage</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.401">HTMLDOC_noResultsMessage</a></pre>
 <div class="block"><b>Configuration property:</b>  No-results message.
  <p>
  <ul>
@@ -821,7 +823,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>HTMLDOC_nowrap</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.413">HTMLDOC_nowrap</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.415">HTMLDOC_nowrap</a></pre>
 <div class="block"><b>Configuration property:</b>  Prevent word wrap on page.
  <p>
  <ul>
@@ -844,7 +846,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>HTMLDOC_cssUrl</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.432">HTMLDOC_cssUrl</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.434">HTMLDOC_cssUrl</a></pre>
 <div class="block"><b>Configuration property:</b>  Stylesheet URL.
  <p>
  <ul>
@@ -872,7 +874,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>HTMLDOC_css</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.464">HTMLDOC_css</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.466">HTMLDOC_css</a></pre>
 <div class="block"><b>Configuration property:</b>  CSS code.
  <p>
  <ul>
@@ -913,7 +915,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>HTMLDOC_css_add</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.469">HTMLDOC_css_add</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.471">HTMLDOC_css_add</a></pre>
 <div class="block"><b>Configuration property:</b>  Add to the <a href="../../../../org/apache/juneau/html/HtmlDocSerializerContext.html#HTMLDOC_css"><code>HTMLDOC_css</code></a> property.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -927,7 +929,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HTMLDOC_template</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.495">HTMLDOC_template</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.497">HTMLDOC_template</a></pre>
 <div class="block"><b>Configuration property:</b>  HTML document template.
  <p>
  <ul>
@@ -970,7 +972,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HtmlDocSerializerContext</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.511">HtmlDocSerializerContext</a>(<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;ps)</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.513">HtmlDocSerializerContext</a>(<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;ps)</pre>
 <div class="block">Constructor.
  <p>
  Typically only called from <a href="../../../../org/apache/juneau/PropertyStore.html#getContext-java.lang.Class-"><code>PropertyStore.getContext(Class)</code></a>.</div>
@@ -994,7 +996,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerContext.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>asMap</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.529">asMap</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerContext.html#line.531">asMap</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/juneau/Context.html#asMap--">Context</a></code></span></div>
 <div class="block">Returns the properties defined on this bean context as a simple map for debugging purposes.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/html/HtmlDocSerializerSession.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/html/HtmlDocSerializerSession.html b/content/site/apidocs/org/apache/juneau/html/HtmlDocSerializerSession.html
index fffc41f..0071ee0 100644
--- a/content/site/apidocs/org/apache/juneau/html/HtmlDocSerializerSession.html
+++ b/content/site/apidocs/org/apache/juneau/html/HtmlDocSerializerSession.html
@@ -244,7 +244,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerSession.html"
 </td>
 </tr>
 <tr id="i7" class="rowColor">
-<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html#getLinks--">getLinks</a></span>()</code>
 <div class="block">Returns the <a href="../../../../org/apache/juneau/html/HtmlDocSerializerContext.html#HTMLDOC_links"><code>HtmlDocSerializerContext.HTMLDOC_links</code></a> setting value in this context.</div>
 </td>
@@ -493,7 +493,7 @@ extends <a href="../../../../org/apache/juneau/html/HtmlSerializerSession.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getLinks</h4>
-<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerSession.html#line.161">getLinks</a>()</pre>
+<pre>public final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocSerializerSession.html#line.161">getLinks</a>()</pre>
 <div class="block">Returns the <a href="../../../../org/apache/juneau/html/HtmlDocSerializerContext.html#HTMLDOC_links"><code>HtmlDocSerializerContext.HTMLDOC_links</code></a> setting value in this context.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/html/HtmlDocTemplateBasic.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/html/HtmlDocTemplateBasic.html b/content/site/apidocs/org/apache/juneau/html/HtmlDocTemplateBasic.html
index 1a12b99..c8c9828 100644
--- a/content/site/apidocs/org/apache/juneau/html/HtmlDocTemplateBasic.html
+++ b/content/site/apidocs/org/apache/juneau/html/HtmlDocTemplateBasic.html
@@ -430,7 +430,7 @@ implements <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>aside</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.129">aside</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.133">aside</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session,
                   <a href="../../../../org/apache/juneau/html/HtmlWriter.html" title="class in org.apache.juneau.html">HtmlWriter</a>&nbsp;w,
                   <a href="../../../../org/apache/juneau/html/HtmlDocSerializer.html" title="class in org.apache.juneau.html">HtmlDocSerializer</a>&nbsp;s,
                   <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)
@@ -456,7 +456,7 @@ implements <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>article</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.136">article</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.140">article</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session,
                     <a href="../../../../org/apache/juneau/html/HtmlWriter.html" title="class in org.apache.juneau.html">HtmlWriter</a>&nbsp;w,
                     <a href="../../../../org/apache/juneau/html/HtmlDocSerializer.html" title="class in org.apache.juneau.html">HtmlDocSerializer</a>&nbsp;s,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)
@@ -482,7 +482,7 @@ implements <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>footer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.157">footer</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.161">footer</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session,
                    <a href="../../../../org/apache/juneau/html/HtmlWriter.html" title="class in org.apache.juneau.html">HtmlWriter</a>&nbsp;w,
                    <a href="../../../../org/apache/juneau/html/HtmlDocSerializer.html" title="class in org.apache.juneau.html">HtmlDocSerializer</a>&nbsp;s,
                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)
@@ -508,7 +508,7 @@ implements <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>hasCss</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.164">hasCss</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.168">hasCss</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html#hasCss-org.apache.juneau.html.HtmlDocSerializerSession-">HtmlDocTemplate</a></code></span></div>
 <div class="block">Returns <jk>true</jk> if this page should render a <code><xt>&lt;head&gt;</xt>/<xt>&lt;style</xt> <xa>type</xa>=<xs>"text/css"</xs><xt>&gt;</xt></code> element.</div>
 <dl>
@@ -527,7 +527,7 @@ implements <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>hasHeader</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.169">hasHeader</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.173">hasHeader</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html#hasHeader-org.apache.juneau.html.HtmlDocSerializerSession-">HtmlDocTemplate</a></code></span></div>
 <div class="block">Returns <jk>true</jk> if this page should render a <code><xt>&lt;body&gt;</xt>/<xt>&lt;header&gt;</xt></code> element.</div>
 <dl>
@@ -546,7 +546,7 @@ implements <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>hasNav</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.174">hasNav</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.178">hasNav</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html#hasNav-org.apache.juneau.html.HtmlDocSerializerSession-">HtmlDocTemplate</a></code></span></div>
 <div class="block">Returns <jk>true</jk> if this page should render a <code><xt>&lt;body&gt;</xt>/<xt>&lt;nav&gt;</xt></code> element.</div>
 <dl>
@@ -565,7 +565,7 @@ implements <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>hasAside</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.179">hasAside</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.183">hasAside</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html#hasAside-org.apache.juneau.html.HtmlDocSerializerSession-">HtmlDocTemplate</a></code></span></div>
 <div class="block">Returns <jk>true</jk> if this page should render a <code><xt>&lt;body&gt;</xt>/<xt>&lt;aside&gt;</xt></code> element.</div>
 <dl>
@@ -584,7 +584,7 @@ implements <a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>hasFooter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.184">hasFooter</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html#line.188">hasFooter</a>(<a href="../../../../org/apache/juneau/html/HtmlDocSerializerSession.html" title="class in org.apache.juneau.html">HtmlDocSerializerSession</a>&nbsp;session)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/juneau/html/HtmlDocTemplate.html#hasFooter-org.apache.juneau.html.HtmlDocSerializerSession-">HtmlDocTemplate</a></code></span></div>
 <div class="block">Returns <jk>true</jk> if this page should render a <code><xt>&lt;body&gt;</xt>/<xt>&lt;footer&gt;</xt></code> element.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/internal/DelegateBeanMap.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/internal/DelegateBeanMap.html b/content/site/apidocs/org/apache/juneau/internal/DelegateBeanMap.html
index 7ca75d7..ad49841 100644
--- a/content/site/apidocs/org/apache/juneau/internal/DelegateBeanMap.html
+++ b/content/site/apidocs/org/apache/juneau/internal/DelegateBeanMap.html
@@ -267,7 +267,7 @@ extends <a href="../../../../org/apache/juneau/BeanMap.html" title="class in org
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.juneau.<a href="../../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a></h3>
-<code><a href="../../../../org/apache/juneau/BeanMap.html#add-java.lang.String-java.lang.Object-">add</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getBean--">getBean</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getBean-boolean-">getBean</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getBeanSession--">getBeanSession</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getClassMeta--">getClassMeta</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getProperty-java.lang.String-">getProperty</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getPropertyMeta-java.lang.String-">getPropertyMeta</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getValues-boolean-org.apache.juneau.BeanPropertyValue...-">getValues</a>, <a href="../../../../org/apache/juneau/BeanMap.html#load-java.util.Map-">load</a>, <a href="../../../../org/apache/juneau/BeanMap.html#load-java.io.Reader-org.apache.juneau.parser.ReaderParser-">load</a>, <a href="../../.
 ./../org/apache/juneau/BeanMap.html#load-java.lang.String-">load</a>, <a href="../../../../org/apache/juneau/BeanMap.html#resolveVars-java.lang.String-">resolveVars</a></code></li>
+<code><a href="../../../../org/apache/juneau/BeanMap.html#add-java.lang.String-java.lang.Object-">add</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getBean--">getBean</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getBean-boolean-">getBean</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getBeanSession--">getBeanSession</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getClassMeta--">getClassMeta</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getProperty-java.lang.String-">getProperty</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getPropertyMeta-java.lang.String-">getPropertyMeta</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getRaw-java.lang.Object-">getRaw</a>, <a href="../../../../org/apache/juneau/BeanMap.html#getValues-boolean-org.apache.juneau.BeanPropertyValue...-">getValues</a>, <a href="../../../../org/apache/juneau/BeanMap.html#load-java.util.Map-">load</a>, <a href="../../../../org/apache/juneau/BeanMap.h
 tml#load-java.io.Reader-org.apache.juneau.parser.ReaderParser-">load</a>, <a href="../../../../org/apache/juneau/BeanMap.html#load-java.lang.String-">load</a>, <a href="../../../../org/apache/juneau/BeanMap.html#resolveVars-java.lang.String-">resolveVars</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.util.AbstractMap">


[15/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/RequestQuery.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/RequestQuery.html b/content/site/apidocs/org/apache/juneau/rest/RequestQuery.html
index 8de564f..72f1080 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RequestQuery.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RequestQuery.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};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public final class <a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.32">RequestQuery</a>
+<pre>public final class <a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.33">RequestQuery</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html?is-external=true" title="class or interface in java.util">LinkedHashMap</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&gt;</pre>
 <div class="block">Represents the query parameters in an HTTP request.</div>
 <dl>
@@ -246,30 +246,68 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 </td>
 </tr>
 <tr id="i8" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#getBoolean-java.lang.String-">getBoolean</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to a boolean.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#getBoolean-java.lang.String-boolean-">getBoolean</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+          boolean&nbsp;def)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to a boolean.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#getInt-java.lang.String-">getInt</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to an integer.</div>
+</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#getInt-java.lang.String-int-">getInt</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+      int&nbsp;def)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to an integer.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#getSearchArgs--">getSearchArgs</a></span>()</code>
+<div class="block">Locates the special search query arguments in the query and returns them as a <a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> object.</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#getFirst-java.lang.String-">getFirst</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-">getString</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Returns a query parameter value.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#getFirst-java.lang.String-java.lang.String-">getFirst</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
-        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</code>
-<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getFirst-java.lang.String-"><code>getFirst(String)</code></a> but returns the specified default value if the query parameter was not specified.</div>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-java.lang.String-">getString</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-"><code>getString(String)</code></a> but returns the specified default value if the query parameter was not specified.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#hasAny-java.lang.String...-">hasAny</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;paramNames)</code>
+<div class="block">Returns <jk>true</jk> if the query parameters contains any of the specified names.</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#put-java.lang.String-java.lang.Object-">put</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
 <div class="block">Sets a request query parameter value.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RequestQuery.html#toString-boolean-">toString</a></span>(boolean&nbsp;sorted)</code>
 <div class="block">Converts the query parameters to a readable string.</div>
@@ -331,7 +369,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RequestQuery</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.32">RequestQuery</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.33">RequestQuery</a>()</pre>
 </li>
 </ul>
 </li>
@@ -348,7 +386,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>addDefault</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.56">addDefault</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;defaultEntries)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.57">addDefault</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;defaultEntries)</pre>
 <div class="block">Adds default entries to these query parameters.
  <p>
  This includes the default queries defined on the servlet and method levels.</div>
@@ -366,7 +404,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>put</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.74">put</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.75">put</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
 <div class="block">Sets a request query parameter value.</div>
 <dl>
@@ -376,18 +414,20 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 </dl>
 </li>
 </ul>
-<a name="getFirst-java.lang.String-">
+<a name="getString-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFirst</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.88">getFirst</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<h4>getString</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.91">getString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns a query parameter value.
  <p>
  Same as <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"><code>ServletRequest.getParameter(String)</code></a> except only looks in the URL string, not parameters from URL-Encoded FORM posts.
  <p>
- This method can be used to retrieve a parameter without triggering the underlying servlet API to load and parse the request body.</div>
+ This method can be used to retrieve a parameter without triggering the underlying servlet API to load and parse the request body.
+ <p>
+ If multiple query parameters have the same name, this returns only the first instance.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>name</code> - The URL parameter name.</dd>
@@ -396,15 +436,83 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 </dl>
 </li>
 </ul>
-<a name="getFirst-java.lang.String-java.lang.String-">
+<a name="getString-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getString</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.112">getString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-"><code>getString(String)</code></a> but returns the specified default value if the query parameter was not specified.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The URL parameter name.</dd>
+<dd><code>def</code> - The default value.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The parameter value, or the default value if parameter not specified or has no value (e.g. <js>"&amp;foo"</js>.</dd>
+</dl>
+</li>
+</ul>
+<a name="getInt-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getInt</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.123">getInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to an integer.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The URL parameter name.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The parameter value, or <code>0</code> if parameter not specified or has no value (e.g. <js>"&amp;foo"</js>.</dd>
+</dl>
+</li>
+</ul>
+<a name="getInt-java.lang.String-int-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFirst</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.109">getFirst</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
-                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;def)</pre>
-<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getFirst-java.lang.String-"><code>getFirst(String)</code></a> but returns the specified default value if the query parameter was not specified.</div>
+<h4>getInt</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.134">getInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+                  int&nbsp;def)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to an integer.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The URL parameter name.</dd>
+<dd><code>def</code> - The default value.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The parameter value, or the default value if parameter not specified or has no value (e.g. <js>"&amp;foo"</js>.</dd>
+</dl>
+</li>
+</ul>
+<a name="getBoolean-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBoolean</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.145">getBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-"><code>getString(String)</code></a> but converts the value to a boolean.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The URL parameter name.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The parameter value, or <jk>false</jk> if parameter not specified or has no value (e.g. <js>"&amp;foo"</js>.</dd>
+</dl>
+</li>
+</ul>
+<a name="getBoolean-java.lang.String-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getBoolean</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.156">getBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+                          boolean&nbsp;def)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-java.lang.String-"><code>getString(String,String)</code></a> but converts the value to a boolean.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>name</code> - The URL parameter name.</dd>
@@ -420,7 +528,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.143">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.190">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type)
           throws <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
 <div class="block">Returns the specified query parameter value converted to a POJO.
@@ -465,7 +573,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.157">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.204">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  T&nbsp;def,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type)
           throws <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
@@ -490,7 +598,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.193">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.240">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  <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>&nbsp;type,
                  <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>...&nbsp;args)
           throws <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
@@ -537,7 +645,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.211">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.258">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;def,
                  <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>&nbsp;type,
                  <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>...&nbsp;args)
@@ -567,7 +675,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getAll</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.227">getAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.274">getAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;c)
              throws <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
 <div class="block">Same as <a href="../../../../org/apache/juneau/rest/RequestQuery.html#get-java.lang.String-java.lang.Class-"><code>get(String, Class)</code></a> except for use on multi-part parameters
@@ -593,7 +701,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getAll</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.247">getAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.294">getAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Type.html?is-external=true" title="class or interface in java.lang.reflect">Type</a>&nbsp;type,
                     <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>...&nbsp;args)
              throws <a href="../../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
@@ -624,7 +732,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>containsAnyKeys</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.257">containsAnyKeys</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;params)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.304">containsAnyKeys</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;params)</pre>
 <div class="block">Returns <jk>true</jk> if the request contains any of the specified query parameters.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -634,13 +742,64 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 </dl>
 </li>
 </ul>
+<a name="getSearchArgs--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSearchArgs</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.337">getSearchArgs</a>()</pre>
+<div class="block">Locates the special search query arguments in the query and returns them as a <a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> object.
+ <p>
+ The query arguments are as follows:
+ <ul>
+   <li><js>"&s="</js> - A comma-delimited list of column-name/search-token pairs.
+      <br>Example: <js>"&s=column1=foo*,column2=*bar"</js>
+   <li><js>"&v="</js> - A comma-delimited list column names to view.
+      <br>Example: <js>"&v=column1,column2"</js>
+   <li><js>"&o="</js> - A comma-delimited list column names to sort by.
+      <br>Column names can be suffixed with <js>'-'</js> to indicate descending order.
+      <br>Example: <js>"&o=column1,column2-"</js>
+   <li><js>"&p="</js> - The zero-index row number of the first row to display.
+      <br>Example: <js>"&p=100"</js>
+   <li><js>"&l="</js> - The number of rows to return.
+      <br><code>0</code> implies return all rows.
+      <br>Example: <js>"&l=100"</js>
+   <li><js>"&i="</js> - The case-insensitive search flag.
+      <br>Example: <js>"&i=true"</js>
+ </ul>
+ <p>
+ Whitespace is trimmed in the parameters.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>A new <a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> object initialized with the special search query arguments.
+   <jk>null</jk> if no search arguments were found.</dd>
+</dl>
+</li>
+</ul>
+<a name="hasAny-java.lang.String...-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>hasAny</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.357">hasAny</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;paramNames)</pre>
+<div class="block">Returns <jk>true</jk> if the query parameters contains any of the specified names.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>paramNames</code> - The parameter names to check for.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><jk>true</jk> if the query parameters contains any of the specified names.</dd>
+</dl>
+</li>
+</ul>
 <a name="toString-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.317">toString</a>(boolean&nbsp;sorted)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.417">toString</a>(boolean&nbsp;sorted)</pre>
 <div class="block">Converts the query parameters to a readable string.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -656,7 +815,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.327">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RequestQuery.html#line.427">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html?is-external=true#toString--" title="class or interface in java.util">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html?is-external=true" title="class or interface in java.util">AbstractMap</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&gt;</code></dd>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/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 27283a1..c292627 100644
--- a/content/site/apidocs/org/apache/juneau/rest/RestRequest.html
+++ b/content/site/apidocs/org/apache/juneau/rest/RestRequest.html
@@ -231,7 +231,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
 <tr id="i9" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestRequest.html#getFormData-java.lang.String-">getFormData</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
-<div class="block">Shortcut for calling <code>getFormData().getFirst(name)</code>.</div>
+<div class="block">Shortcut for calling <code>getFormData().getString(name)</code>.</div>
 </td>
 </tr>
 <tr id="i10" class="altColor">
@@ -326,7 +326,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
 <tr id="i26" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/rest/RestRequest.html#getQuery-java.lang.String-">getQuery</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
-<div class="block">Shortcut for calling <code>getQuery().getFirst(name)</code>.</div>
+<div class="block">Shortcut for calling <code>getQuery().getString(name)</code>.</div>
 </td>
 </tr>
 <tr id="i27" class="rowColor">
@@ -688,7 +688,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
 <li class="blockList">
 <h4>getQuery</h4>
 <pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.356">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>&nbsp;name)</pre>
-<div class="block">Shortcut for calling <code>getQuery().getFirst(name)</code>.</div>
+<div class="block">Shortcut for calling <code>getQuery().getString(name)</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>name</code> - The query parameter name.</dd>
@@ -718,7 +718,7 @@ extends <a href="http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServ
 <li class="blockList">
 <h4>getFormData</h4>
 <pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/rest/RestRequest.html#line.396">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>&nbsp;name)</pre>
-<div class="block">Shortcut for calling <code>getFormData().getFirst(name)</code>.</div>
+<div class="block">Shortcut for calling <code>getFormData().getString(name)</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>name</code> - The form data parameter name.</dd>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/converters/Queryable.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/converters/Queryable.html b/content/site/apidocs/org/apache/juneau/rest/converters/Queryable.html
index 7a1c062..34723c9 100644
--- a/content/site/apidocs/org/apache/juneau/rest/converters/Queryable.html
+++ b/content/site/apidocs/org/apache/juneau/rest/converters/Queryable.html
@@ -112,7 +112,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public final class <a href="../../../../../src-html/org/apache/juneau/rest/converters/Queryable.html#line.52">Queryable</a>
+<pre>public final class <a href="../../../../../src-html/org/apache/juneau/rest/converters/Queryable.html#line.51">Queryable</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="../../../../../org/apache/juneau/rest/RestConverter.html" title="interface in org.apache.juneau.rest">RestConverter</a></pre>
 <div class="block">Converter for enablement of <a href="../../../../../org/apache/juneau/utils/PojoQuery.html" title="class in org.apache.juneau.utils"><code>PojoQuery</code></a> support on response objects returned by a <code>@RestMethod</code> method.
@@ -122,23 +122,28 @@ implements <a href="../../../../../org/apache/juneau/rest/RestConverter.html" ti
  <p>
  The following HTTP request parameters are available for tabular data (e.g. <code>Collections</code> of <code>Maps</code>, arrays of beans, etc...):
  <ul class='spaced-list'>
-   <li><b>&amp;q=<i>JSON-object</i></b> - Query parameter.  Only return rows that match the specified search string. <br>
-         The JSON object keys are column names, and the values are search parameter strings.<br>
-         Example:  <code>&amp;s=(name=Bill*,birthDate=&gt;2000)</code>
-   <li><b>&amp;v=<i>JSON-array or comma-delimited list</i></b> - View parameter.  Only return the specified columns.<br>
-         Example:  <code>&amp;v=(name,birthDate)</code>
-   <li><b>&amp;s=<i>JSON-object</i></b> - Sort parameter.  Sort the results by the specified columns.<br>
-         The JSON object keys are the column names, and the values are either <code>'A'</code> for ascending or <code>'D'</code> for descending.
-         Example:  <code>&amp;s=(name=A,birthDate=D)</code>
-   <li><b>&amp;i=<i>true/false</i></b> - Case-insensitive parameter.  Specify <jk>true</jk> for case-insensitive matching on the <code>&amp;amp;q</code> parameter.
-   <li><b>&amp;p=<i>number</i></b> - Position parameter.  Only return rows starting at the specified index position (zero-indexed).  Default is <code>0</code>.
-   <li><b>&amp;q=<i>number</i></b> - Limit parameter.  Only return the specified number of rows. Default is <code>0</code> (meaning return all rows).
+   <li><code>&amp;s=</code> Search arguments.
+         <br>Comma-delimited list of key/value pairs representing column names and search tokens.
+         <br>Example:  <js>"&amp;s=name=Bill*,birthDate&gt;2000"</js>
+   <li><code>&amp;v=</code> Visible columns.
+         <br>Comma-delimited list of column names to display.
+         <br>Example:  <js>"&amp;v=name,birthDate"</js>
+   <li><code>&amp;o=</code> Sort commands.
+         <br>Comma-delimited list of columns to sort by.
+         <br>Column names can be suffixed with <js>'+'</js> or <js>'-'</js> to indicate ascending or descending order.
+         <br>The default is ascending order.
+         <br>Example:  <js>"&amp;o=name,birthDate-"</js>
+   <li><code>&amp;i=</code> Case-insensitive parameter.
+         <br>Boolean flag for case-insensitive matching on the search parameters.
+   <li><code>&amp;p=</code> - Position parameter.
+         <br>Only return rows starting at the specified index position (zero-indexed).
+         <br>Default is <code>0</code>.
+   <li><code>&amp;l=</code> Limit parameter.
+         <br>Only return the specified number of rows.
+         <br>Default is <code>0</code> (meaning return all rows).
  </ul>
 
  <p>
- The <b>&amp;v</b> parameter can also be used on <code>Maps</code> and beans.
-
- <p>
  See <a href="../../../../../org/apache/juneau/utils/PojoQuery.html" title="class in org.apache.juneau.utils"><code>PojoQuery</code></a> for additional information on filtering POJO models.</div>
 </li>
 </ul>
@@ -179,7 +184,7 @@ implements <a href="../../../../../org/apache/juneau/rest/RestConverter.html" ti
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/converters/Queryable.html#convert-org.apache.juneau.rest.RestRequest-java.lang.Object-org.apache.juneau.ClassMeta-">convert</a></span>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o,
-       <a href="../../../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&nbsp;cm)</code>
+       <a href="../../../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;?&gt;&nbsp;cm)</code>
 <div class="block">Performs post-call conversion on the specified response object.</div>
 </td>
 </tr>
@@ -211,7 +216,7 @@ implements <a href="../../../../../org/apache/juneau/rest/RestConverter.html" ti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Queryable</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/converters/Queryable.html#line.52">Queryable</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/converters/Queryable.html#line.51">Queryable</a>()</pre>
 </li>
 </ul>
 </li>
@@ -228,9 +233,9 @@ implements <a href="../../../../../org/apache/juneau/rest/RestConverter.html" ti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>convert</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/converters/Queryable.html#line.56">convert</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/converters/Queryable.html#line.54">convert</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req,
                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o,
-                      <a href="../../../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&nbsp;cm)</pre>
+                      <a href="../../../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;?&gt;&nbsp;cm)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/juneau/rest/RestConverter.html#convert-org.apache.juneau.rest.RestRequest-java.lang.Object-org.apache.juneau.ClassMeta-">RestConverter</a></code></span></div>
 <div class="block">Performs post-call conversion on the specified response object.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/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 e67c130..264e4a9 100644
--- a/content/site/apidocs/org/apache/juneau/rest/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/rest/package-summary.html
@@ -2398,14 +2398,14 @@
                <ul>
                   <li><ck>$R{attribute.X}</ck> - Value returned by <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> converted to a string.
                   <li><ck>$R{contextPath}</ck> - Value returned by <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"><code>HttpServletRequestWrapper.getContextPath()</code></a>.
-                  <li><ck>$R{formData.X}</ck> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getFirst-java.lang.String-"><code>RequestFormData.getFirst(String)</code></a>.
-                  <li><ck>$R{header.X}</ck> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getFirst-java.lang.String-"><code>RequestHeaders.getFirst(String)</code></a>.
+                  <li><ck>$R{formData.X}</ck> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-"><code>RequestFormData.getString(String)</code></a>.
+                  <li><ck>$R{header.X}</ck> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-"><code>RequestHeaders.getString(String)</code></a>.
                   <li><ck>$R{method}</ck> - Value returned by <a href="../../../../org/apache/juneau/rest/RestRequest.html#getMethod--"><code>RestRequest.getMethod()</code></a>.
                   <li><ck>$R{methodSummary}</ck> - Value returned by <a href="../../../../org/apache/juneau/rest/RestRequest.html#getMethodSummary--"><code>RestRequest.getMethodSummary()</code></a>.
                   <li><ck>$R{methodDescription}</ck> - Value returned by <a href="../../../../org/apache/juneau/rest/RestRequest.html#getMethodDescription--"><code>RestRequest.getMethodDescription()</code></a>.
                   <li><ck>$R{path.X}</ck> - Value returned by <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html?is-external=true#get-java.lang.Object-" title="class or interface in java.util"><code>TreeMap.get(Object)</code></a>.
                   <li><ck>$R{pathInfo}</ck> - Value returned by <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"><code>HttpServletRequestWrapper.getPathInfo()</code></a>.
-                  <li><ck>$R{query.X}</ck> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getFirst-java.lang.String-"><code>RequestQuery.getFirst(String)</code></a>.
+                  <li><ck>$R{query.X}</ck> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-"><code>RequestQuery.getString(String)</code></a>.
                   <li><ck>$R{requestParentURI}</ck> - Value returned by <a href="../../../../org/apache/juneau/UriContext.html#getRootRelativePathInfoParent--"><code>UriContext.getRootRelativePathInfoParent()</code></a>.
                   <li><ck>$R{requestURI}</ck> - Value returned by <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"><code>HttpServletRequestWrapper.getRequestURI()</code></a>.
                   <li><ck>$R{servletDescription}</ck> - Value returned by <a href="../../../../org/apache/juneau/rest/RestRequest.html#getServletDescription--"><code>RestRequest.getServletDescription()</code></a>.

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/PoweredByJuneauWidget.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/PoweredByJuneauWidget.html b/content/site/apidocs/org/apache/juneau/rest/widget/PoweredByJuneauWidget.html
index 60a8236..76886d1 100644
--- a/content/site/apidocs/org/apache/juneau/rest/widget/PoweredByJuneauWidget.html
+++ b/content/site/apidocs/org/apache/juneau/rest/widget/PoweredByJuneauWidget.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/juneau/rest/widget/PoweredByApacheWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" target="_top">Frames</a></li>
@@ -272,7 +272,7 @@ extends <a href="../../../../../org/apache/juneau/rest/widget/Widget.html" title
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/juneau/rest/widget/PoweredByApacheWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/QueryWidget.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/QueryWidget.html b/content/site/apidocs/org/apache/juneau/rest/widget/QueryWidget.html
new file mode 100644
index 0000000..1a5ef15
--- /dev/null
+++ b/content/site/apidocs/org/apache/juneau/rest/widget/QueryWidget.html
@@ -0,0 +1,410 @@
+<!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>QueryWidget (Apache Juneau (incubating) 6.2.1-incubating-SNAPSHOT)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="QueryWidget (Apache Juneau (incubating) 6.2.1-incubating-SNAPSHOT)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/juneau/rest/widget/QueryWidget.html" target="_top">Frames</a></li>
+<li><a href="QueryWidget.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.juneau.rest.widget</div>
+<h2 title="Class QueryWidget" class="title">Class QueryWidget</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="../../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">org.apache.juneau.rest.widget.Widget</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.juneau.rest.widget.QueryWidget</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/juneau/rest/widget/QueryWidget.html#line.118">QueryWidget</a>
+extends <a href="../../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a></pre>
+<div class="block">Adds a <code>QUERY</code> link to the page that allows you to perform search/view/sort/paging on the page data.
+ <p>
+ A typical usage of the query widget is to include it as a navigation link as shown in the example below
+   pulled from the <code>PetStoreResource</code> example:
+ <p class='bcode'>
+   <ja>@RestResource</ja>(
+      widgets={
+         QueryWidget.<jk>class</jk>
+      },
+      htmldoc=<ja>@HtmlDoc</ja>(
+         links=<js>"{up:'...',options:'...',query:'$W{query}',source:'...'}"</js>
+      )
+   )
+ </p>
+ <p>
+ In the above example, this adds a <code>QUERY</code> that displays a search popup that can be used for
+   filtering the page results...
+ <p>
+ <img class='bordered' src='doc-files/PetStore_Query.png'>
+ <p>
+ Tooltips are provided by hovering over the field names.
+ <p>
+ <img class='bordered' src='doc-files/PetStore_Query_tooltip.png'>
+ <p>
+ When submitted, the form submits a GET request against the current URI with special GET search API query parameters.
+ (e.g. <js>"?s=column1=Foo*&amp;v=column1,column2&amp;o=column1,column2-&amp;p=100&amp;l=100"</js>).
+ <p>
+ The search arguments can be retrieved programmatically using <a href="../../../../../org/apache/juneau/rest/RequestQuery.html#getSearchArgs--"><code>RequestQuery.getSearchArgs()</code></a>.
+ <p>
+ Typically, the search functionality is implemented by applying the predefined <a href="../../../../../org/apache/juneau/rest/converters/Queryable.html" title="class in org.apache.juneau.rest.converters"><code>Queryable</code></a> converter on the
+   method that's returning a 2-dimensional table of POJOs that you wish to filter:
+ <p class='bcode'>
+   <ja>@RestMethod</ja>(
+      name=<js>"GET"</js>,
+      path=<js>"/"</js>,
+      converters=Queryable.<jk>class</jk>
+   )
+   <jk>public</jk> Collection&lt;Pet&gt; getPets() {
+ </p>
+ <p>
+ The following shows various search arguments and their results on the page:
+ <table style='width:auto'>
+   <tr>
+      <th>Search type</th><th>Query arguments</th><th>Query results</th>
+   </tr>
+   <tr>
+      <td>No arguments</td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_q1.png'></td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_r1.png'></td>
+   </tr>
+   <tr>
+      <td>String search</td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_q2.png'></td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_r2.png'></td>
+   </tr>
+   <tr>
+      <td>Numeric range</td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_q3.png'></td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_r3.png'></td>
+   </tr>
+   <tr>
+      <td>ANDed terms</td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_q4.png'></td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_r4.png'></td>
+   </tr>
+   <tr>
+      <td>Date range (entire year)</td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_q8.png'></td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_r8.png'></td>
+   </tr>
+   <tr>
+      <td>Date range</td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_q9.png'></td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_r9.png'></td>
+   </tr>
+   <tr>
+      <td>Date range</td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_q10.png'></td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_r10.png'></td>
+   </tr>
+   <tr>
+      <td>Hide columns</td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_q5.png'></td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_r5.png'></td>
+   </tr>
+   <tr>
+      <td>Sort</td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_q6.png'></td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_r6.png'></td>
+   </tr>
+   <tr>
+      <td>Sort descending</td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_q7.png'></td>
+      <td><img class='bordered' src='doc-files/PetStore_Query_r7.png'></td>
+   </tr>
+ </table></div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/widget/QueryWidget.html#QueryWidget--">QueryWidget</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/juneau/rest/widget/QueryWidget.html#getName--">getName</a></span>()</code>
+<div class="block">The widget key (i.e.</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/rest/widget/QueryWidget.html#resolve-org.apache.juneau.rest.RestRequest-">resolve</a></span>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)</code>
+<div class="block">Resolves the value for the variable.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="QueryWidget--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>QueryWidget</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/widget/QueryWidget.html#line.118">QueryWidget</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getName--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getName</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/widget/QueryWidget.html#line.121">getName</a>()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/juneau/rest/widget/Widget.html#getName--">Widget</a></code></span></div>
+<div class="block">The widget key (i.e. The contents of the <js>"$W{...}"</js> variable).</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/juneau/rest/widget/Widget.html#getName--">getName</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The widget key.
+   Must not be <jk>null</jk>.</dd>
+</dl>
+</li>
+</ul>
+<a name="resolve-org.apache.juneau.rest.RestRequest-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>resolve</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/juneau/rest/widget/QueryWidget.html#line.126">resolve</a>(<a href="../../../../../org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest">RestRequest</a>&nbsp;req)
+               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/juneau/rest/widget/Widget.html#resolve-org.apache.juneau.rest.RestRequest-">Widget</a></code></span></div>
+<div class="block">Resolves the value for the variable.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/juneau/rest/widget/Widget.html#resolve-org.apache.juneau.rest.RestRequest-">resolve</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>req</code> - The HTTP request object.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The resolved value.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+</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/widget/PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/juneau/rest/widget/QueryWidget.html" target="_top">Frames</a></li>
+<li><a href="QueryWidget.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2017 <a href="http://www.apache.org/">Apache</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/Widget.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/Widget.html b/content/site/apidocs/org/apache/juneau/rest/widget/Widget.html
index b191b11..7bf957e 100644
--- a/content/site/apidocs/org/apache/juneau/rest/widget/Widget.html
+++ b/content/site/apidocs/org/apache/juneau/rest/widget/Widget.html
@@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li>Next&nbsp;Class</li>
 </ul>
 <ul class="navList">
@@ -108,7 +108,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../../org/apache/juneau/rest/widget/ContentTypeLinksColumnWidget.html" title="class in org.apache.juneau.rest.widget">ContentTypeLinksColumnWidget</a>, <a href="../../../../../org/apache/juneau/rest/widget/ContentTypeLinksRowWidget.html" title="class in org.apache.juneau.rest.widget">ContentTypeLinksRowWidget</a>, <a href="../../../../../org/apache/juneau/rest/widget/PoweredByApacheWidget.html" title="class in org.apache.juneau.rest.widget">PoweredByApacheWidget</a>, <a href="../../../../../org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget">PoweredByJuneauWidget</a></dd>
+<dd><a href="../../../../../org/apache/juneau/rest/widget/ContentTypeLinksColumnWidget.html" title="class in org.apache.juneau.rest.widget">ContentTypeLinksColumnWidget</a>, <a href="../../../../../org/apache/juneau/rest/widget/ContentTypeLinksRowWidget.html" title="class in org.apache.juneau.rest.widget">ContentTypeLinksRowWidget</a>, <a href="../../../../../org/apache/juneau/rest/widget/PoweredByApacheWidget.html" title="class in org.apache.juneau.rest.widget">PoweredByApacheWidget</a>, <a href="../../../../../org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget">PoweredByJuneauWidget</a>, <a href="../../../../../org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget">QueryWidget</a></dd>
 </dl>
 <hr>
 <br>
@@ -269,7 +269,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li>Next&nbsp;Class</li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query.png
new file mode 100644
index 0000000..0db9c0d
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q1.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q1.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q1.png
new file mode 100644
index 0000000..65b08dc
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q1.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q10.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q10.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q10.png
new file mode 100644
index 0000000..3ec59c1
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q10.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q2.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q2.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q2.png
new file mode 100644
index 0000000..935b2f0
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q2.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q3.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q3.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q3.png
new file mode 100644
index 0000000..a0b72c7
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q3.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q4.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q4.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q4.png
new file mode 100644
index 0000000..b324817
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q4.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q5.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q5.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q5.png
new file mode 100644
index 0000000..3fc6aab
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q5.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q6.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q6.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q6.png
new file mode 100644
index 0000000..d3fbd7c
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q6.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q7.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q7.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q7.png
new file mode 100644
index 0000000..ba8c997
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q7.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q8.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q8.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q8.png
new file mode 100644
index 0000000..e42fbbe
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q8.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q9.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q9.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q9.png
new file mode 100644
index 0000000..7cd2ffe
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_q9.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r1.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r1.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r1.png
new file mode 100644
index 0000000..dcc26b3
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r1.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r10.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r10.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r10.png
new file mode 100644
index 0000000..8cf450b
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r10.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r2.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r2.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r2.png
new file mode 100644
index 0000000..5904efa
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r2.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r3.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r3.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r3.png
new file mode 100644
index 0000000..4adf7cc
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r3.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r4.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r4.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r4.png
new file mode 100644
index 0000000..5904efa
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r4.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r5.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r5.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r5.png
new file mode 100644
index 0000000..9b6185a
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r5.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r6.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r6.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r6.png
new file mode 100644
index 0000000..d0f21be
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r6.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r8.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r8.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r8.png
new file mode 100644
index 0000000..c3450d8
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r8.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r9.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r9.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r9.png
new file mode 100644
index 0000000..8cf450b
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_r9.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_tooltip.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_tooltip.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_tooltip.png
new file mode 100644
index 0000000..4373661
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/PetStore_Query_tooltip.png differ

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/Petstore_Query_r7.png
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/Petstore_Query_r7.png b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/Petstore_Query_r7.png
new file mode 100644
index 0000000..472a2ce
Binary files /dev/null and b/content/site/apidocs/org/apache/juneau/rest/widget/doc-files/Petstore_Query_r7.png differ



[13/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/utils/package-frame.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/utils/package-frame.html b/content/site/apidocs/org/apache/juneau/utils/package-frame.html
index b340415..62a375b 100644
--- a/content/site/apidocs/org/apache/juneau/utils/package-frame.html
+++ b/content/site/apidocs/org/apache/juneau/utils/package-frame.html
@@ -32,6 +32,8 @@
 <li><a href="PojoRest.html" title="class in org.apache.juneau.utils" target="classFrame">PojoRest</a></li>
 <li><a href="ProcBuilder.html" title="class in org.apache.juneau.utils" target="classFrame">ProcBuilder</a></li>
 <li><a href="ProcBuilder.Matcher.html" title="class in org.apache.juneau.utils" target="classFrame">ProcBuilder.Matcher</a></li>
+<li><a href="SearchArgs.html" title="class in org.apache.juneau.utils" target="classFrame">SearchArgs</a></li>
+<li><a href="SearchArgs.Builder.html" title="class in org.apache.juneau.utils" target="classFrame">SearchArgs.Builder</a></li>
 <li><a href="StringMessage.html" title="class in org.apache.juneau.utils" target="classFrame">StringMessage</a></li>
 <li><a href="StringObject.html" title="class in org.apache.juneau.utils" target="classFrame">StringObject</a></li>
 <li><a href="ZipFileList.html" title="class in org.apache.juneau.utils" target="classFrame">ZipFileList</a></li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/utils/package-summary.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/utils/package-summary.html b/content/site/apidocs/org/apache/juneau/utils/package-summary.html
index 5887d8d..cfa6aee 100644
--- a/content/site/apidocs/org/apache/juneau/utils/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/utils/package-summary.html
@@ -171,7 +171,7 @@
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/juneau/utils/PojoQuery.html" title="class in org.apache.juneau.utils">PojoQuery</a></td>
 <td class="colLast">
-<div class="block">Designed to provide query/view/sort/paging filtering on tabular in-memory POJO models.</div>
+<div class="block">Designed to provide search/view/sort/paging filtering on tabular in-memory POJO models.</div>
 </td>
 </tr>
 <tr class="rowColor">
@@ -194,6 +194,18 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a></td>
+<td class="colLast">
+<div class="block">Encapsulates arguments for basic search/view/sort/position/limit functionality.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></td>
+<td class="colLast">
+<div class="block">Builder for <a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> class.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../org/apache/juneau/utils/StringMessage.html" title="class in org.apache.juneau.utils">StringMessage</a></td>
 <td class="colLast">
 <div class="block">An encapsulated MessageFormat-style string and arguments.</div>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/utils/package-tree.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/utils/package-tree.html b/content/site/apidocs/org/apache/juneau/utils/package-tree.html
index 0802681..66c8856 100644
--- a/content/site/apidocs/org/apache/juneau/utils/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/utils/package-tree.html
@@ -143,6 +143,8 @@
 <li type="circle">org.apache.juneau.utils.<a href="../../../../org/apache/juneau/utils/MessageBundle.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">MessageBundle</span></a></li>
 </ul>
 </li>
+<li type="circle">org.apache.juneau.utils.<a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">SearchArgs</span></a></li>
+<li type="circle">org.apache.juneau.utils.<a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">SearchArgs.Builder</span></a></li>
 <li type="circle">org.apache.juneau.utils.<a href="../../../../org/apache/juneau/utils/StringMessage.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">StringMessage</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/CharSequence.html?is-external=true" title="class or interface in java.lang">CharSequence</a>, org.apache.juneau.<a href="../../../../org/apache/juneau/Writable.html" title="interface in org.apache.juneau">Writable</a>)</li>
 <li type="circle">org.apache.juneau.utils.<a href="../../../../org/apache/juneau/utils/StringObject.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">StringObject</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/CharSequence.html?is-external=true" title="class or interface in java.lang">CharSequence</a>, org.apache.juneau.<a href="../../../../org/apache/juneau/Writable.html" title="interface in org.apache.juneau">Writable</a>)</li>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Throwable</span></a> (implements java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/overview-summary.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/overview-summary.html b/content/site/apidocs/overview-summary.html
index f375fc1..9c3b5fd 100644
--- a/content/site/apidocs/overview-summary.html
+++ b/content/site/apidocs/overview-summary.html
@@ -6869,6 +6869,7 @@
                <li><a href="org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget"><code>PoweredByJuneauWidget</code></a>
                <li><a href="org/apache/juneau/rest/widget/ContentTypeLinksColumnWidget.html" title="class in org.apache.juneau.rest.widget"><code>ContentTypeLinksColumnWidget</code></a>
                <li><a href="org/apache/juneau/rest/widget/ContentTypeLinksRowWidget.html" title="class in org.apache.juneau.rest.widget"><code>ContentTypeLinksRowWidget</code></a>
+               <li><a href="org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget"><code>QueryWidget</code></a>
             </ul>
          <li><code>devops.css</code> cleaned up.
          <li>Removed a bunch of URL-related methods from <a href="org/apache/juneau/rest/RestRequest.html" title="class in org.apache.juneau.rest"><code>RestRequest</code></a>.  

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/overview-tree.html b/content/site/apidocs/overview-tree.html
index 0a26bb5..2d4e725 100644
--- a/content/site/apidocs/overview-tree.html
+++ b/content/site/apidocs/overview-tree.html
@@ -1085,6 +1085,8 @@
 <li type="circle">org.apache.juneau.dto.jsonschema.<a href="org/apache/juneau/dto/jsonschema/SchemaRef.html" title="class in org.apache.juneau.dto.jsonschema"><span class="typeNameLink">SchemaRef</span></a></li>
 </ul>
 </li>
+<li type="circle">org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">SearchArgs</span></a></li>
+<li type="circle">org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">SearchArgs.Builder</span></a></li>
 <li type="circle">org.apache.juneau.ini.<a href="org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini"><span class="typeNameLink">Section</span></a> (implements java.util.<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;K,V&gt;)</li>
 <li type="circle">org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/SerializedNameValuePair.html" title="class in org.apache.juneau.rest.client"><span class="typeNameLink">SerializedNameValuePair</span></a> (implements org.apache.http.NameValuePair)</li>
 <li type="circle">org.apache.juneau.serializer.<a href="org/apache/juneau/serializer/SerializerGroup.html" title="class in org.apache.juneau.serializer"><span class="typeNameLink">SerializerGroup</span></a></li>
@@ -1284,6 +1286,7 @@
 <li type="circle">org.apache.juneau.rest.widget.<a href="org/apache/juneau/rest/widget/ContentTypeLinksRowWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">ContentTypeLinksRowWidget</span></a></li>
 <li type="circle">org.apache.juneau.rest.widget.<a href="org/apache/juneau/rest/widget/PoweredByApacheWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">PoweredByApacheWidget</span></a></li>
 <li type="circle">org.apache.juneau.rest.widget.<a href="org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">PoweredByJuneauWidget</span></a></li>
+<li type="circle">org.apache.juneau.rest.widget.<a href="org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">QueryWidget</span></a></li>
 </ul>
 </li>
 <li type="circle">org.apache.juneau.internal.<a href="org/apache/juneau/internal/WrappedMap.html" title="class in org.apache.juneau.internal"><span class="typeNameLink">WrappedMap</span></a>&lt;K,V&gt; (implements java.util.<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;K,V&gt;)</li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/BeanContext.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/BeanContext.html b/content/site/apidocs/src-html/org/apache/juneau/BeanContext.html
index 6ca48ed..8c01ce1 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/BeanContext.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/BeanContext.html
@@ -1672,9 +1672,11 @@
 <span class="sourceLineNo">1664</span>            .append("locale", locale)<a name="line.1664"></a>
 <span class="sourceLineNo">1665</span>            .append("timeZone", timeZone)<a name="line.1665"></a>
 <span class="sourceLineNo">1666</span>            .append("mediaType", mediaType)<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>         );<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>   }<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>}<a name="line.1669"></a>
+<span class="sourceLineNo">1667</span>            .append("includeProperties", includeProperties)<a name="line.1667"></a>
+<span class="sourceLineNo">1668</span>            .append("excludeProperties", excludeProperties)<a name="line.1668"></a>
+<span class="sourceLineNo">1669</span>         );<a name="line.1669"></a>
+<span class="sourceLineNo">1670</span>   }<a name="line.1670"></a>
+<span class="sourceLineNo">1671</span>}<a name="line.1671"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/BeanMap.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/BeanMap.html b/content/site/apidocs/src-html/org/apache/juneau/BeanMap.html
index 9b821db..6bc222e 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/BeanMap.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/BeanMap.html
@@ -291,257 +291,272 @@
 <span class="sourceLineNo">283</span>   }<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>    * Convenience method for setting multiple property values by passing in JSON (or other) text.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    * &lt;p&gt;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    * Typically the input is going to be JSON, although the actual data type<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    *    depends on the default parser specified by the {@link BeanContext#BEAN_defaultParser} property<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    *    value on the config that created the context that created this map.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    *<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    * &lt;p class='bcode'&gt;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    *    aPersonBean.load(&lt;js&gt;"{name:'John Smith',age:21}"&lt;/js&gt;)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    * &lt;/p&gt;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    *<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    * @param input The text that will get parsed into a map and then added to this map.<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    * @return This object (for method chaining).<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    */<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   public BeanMap&lt;T&gt; load(String input) throws ParseException {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      putAll(new ObjectMap(input, this.meta.ctx.defaultParser));<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return this;<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>    * Convenience method for setting multiple property values by passing in a reader.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    *<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    * @param r The text that will get parsed into a map and then added to this map.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    * @param p The parser to use to parse the text.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    * @return This object (for method chaining).<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    * @throws IOException Thrown by &lt;code&gt;Reader&lt;/code&gt;.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   public BeanMap&lt;T&gt; load(Reader r, ReaderParser p) throws ParseException, IOException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      putAll(new ObjectMap(r, p));<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      return this;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>   /**<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    * Convenience method for loading this map with the contents of the specified map.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    * &lt;p&gt;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    * Identical to {@link #putAll(Map)} except as a fluent-style method.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    *<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    * @param entries The map containing the entries to add to this map.<a name="line.325"></a>
+<span class="sourceLineNo">286</span>    * Same as {@link #get(Object)} except bypasses the POJO filter associated with the bean property or<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    *    bean filter associated with the bean class.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    *<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    * @param property The name of the property to get.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    * @return The raw property value.<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    */<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   public Object getRaw(Object property) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      String pName = StringUtils.toString(property);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      BeanPropertyMeta p = getPropertyMeta(pName);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (p == null)<a name="line.295"></a>
+<span class="sourceLineNo">296</span>         return null;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      return p.getRaw(this, pName);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   }<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>   /**<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    * Convenience method for setting multiple property values by passing in JSON (or other) text.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    * &lt;p&gt;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    * Typically the input is going to be JSON, although the actual data type<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    *    depends on the default parser specified by the {@link BeanContext#BEAN_defaultParser} property<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    *    value on the config that created the context that created this map.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    *<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    * &lt;p class='bcode'&gt;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    *    aPersonBean.load(&lt;js&gt;"{name:'John Smith',age:21}"&lt;/js&gt;)<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    * &lt;/p&gt;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    *<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    * @param input The text that will get parsed into a map and then added to this map.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    * @return This object (for method chaining).<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    */<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   public BeanMap&lt;T&gt; load(String input) throws ParseException {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      putAll(new ObjectMap(input, this.meta.ctx.defaultParser));<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      return this;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   }<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>   /**<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    * Convenience method for setting multiple property values by passing in a reader.<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    *<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    * @param r The text that will get parsed into a map and then added to this map.<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    * @param p The parser to use to parse the text.<a name="line.325"></a>
 <span class="sourceLineNo">326</span>    * @return This object (for method chaining).<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    */<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   @SuppressWarnings({"unchecked","rawtypes"})<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   public BeanMap&lt;T&gt; load(Map entries) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      putAll(entries);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      return this;<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>
-<span class="sourceLineNo">334</span>   /**<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    * Returns the names of all properties associated with the bean.<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    * &lt;p&gt;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    * The returned set is unmodifiable.<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   @Override /* Map */<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   public Set&lt;String&gt; keySet() {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      if (meta.dynaProperty == null)<a name="line.341"></a>
-<span class="sourceLineNo">342</span>         return meta.properties.keySet();<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      Set&lt;String&gt; l = new LinkedHashSet&lt;String&gt;();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      for (String p : meta.properties.keySet())<a name="line.344"></a>
-<span class="sourceLineNo">345</span>         if (! "*".equals(p))<a name="line.345"></a>
-<span class="sourceLineNo">346</span>            l.add(p);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      try {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>         l.addAll(meta.dynaProperty.getDynaMap(bean).keySet());<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      } catch (Exception e) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>         throw new BeanRuntimeException(e);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      return l;<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>   /**<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    * Returns the specified property on this bean map.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    * &lt;p&gt;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    * Allows you to get and set an individual property on a bean without having a<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    *    handle to the bean itself by using the {@link BeanMapEntry#getValue()}<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    *    and {@link BeanMapEntry#setValue(Object)} methods.<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    * &lt;p&gt;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    * This method can also be used to get metadata on a property by<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    *    calling the {@link BeanMapEntry#getMeta()} method.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    *<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    * @param propertyName The name of the property to look up.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    * @return The bean property, or null if the bean has no such property.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   public BeanMapEntry getProperty(String propertyName) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      BeanPropertyMeta p = getPropertyMeta(propertyName);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      if (p == null)<a name="line.370"></a>
-<span class="sourceLineNo">371</span>         return null;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      return new BeanMapEntry(this, p, propertyName);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>   /**<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    * Returns the metadata on the specified property.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    *<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    * @param propertyName The name of the bean property.<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    * @return Metadata on the specified property, or &lt;jk&gt;null&lt;/jk&gt; if that property does not exist.<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>   public BeanPropertyMeta getPropertyMeta(String propertyName) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      BeanPropertyMeta bpMeta = meta.properties.get(propertyName);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (bpMeta == null)<a name="line.383"></a>
-<span class="sourceLineNo">384</span>         bpMeta = meta.dynaProperty;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      return bpMeta;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>   /**<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    * Returns the {@link ClassMeta} of the wrapped bean.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    *<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    * @return The class type of the wrapped bean.<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   @Override /* Delagate */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   public ClassMeta&lt;T&gt; getClassMeta() {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      return this.meta.getClassMeta();<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>   /**<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    * Invokes all the getters on this bean and return the values as a list of {@link BeanPropertyValue} objects.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    * &lt;p&gt;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    * This allows a snapshot of all values to be grabbed from a bean in one call.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    *<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    * @param ignoreNulls<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    * Don't return properties whose values are null.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    * @param prependVals<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    * Additional bean property values to prepended to this list.<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    * Any &lt;jk&gt;null&lt;/jk&gt; values in this list will be ignored.<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    * @return The list of all bean property values.<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    */<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   public List&lt;BeanPropertyValue&gt; getValues(final boolean ignoreNulls, BeanPropertyValue...prependVals) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      Collection&lt;BeanPropertyMeta&gt; properties = getProperties();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      int capacity = (ignoreNulls &amp;&amp; properties.size() &gt; 10) ? 10 : properties.size() + prependVals.length;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      List&lt;BeanPropertyValue&gt; l = new ArrayList&lt;BeanPropertyValue&gt;(capacity);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      for (BeanPropertyValue v : prependVals)<a name="line.414"></a>
-<span class="sourceLineNo">415</span>         if (v != null)<a name="line.415"></a>
-<span class="sourceLineNo">416</span>            l.add(v);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      for (BeanPropertyMeta bpm : properties) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>         try {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>            if (bpm.isDyna()) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>               for (String pName : bpm.getDynaMap(bean).keySet()) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>                  Object val = bpm.get(this, pName);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>                  if (val != null || ! ignoreNulls)<a name="line.422"></a>
-<span class="sourceLineNo">423</span>                     l.add(new BeanPropertyValue(bpm, pName, val, null));<a name="line.423"></a>
-<span class="sourceLineNo">424</span>               }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>            } else {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>               Object val = bpm.get(this, null);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>               if (val != null || ! ignoreNulls)<a name="line.427"></a>
-<span class="sourceLineNo">428</span>                  l.add(new BeanPropertyValue(bpm, bpm.getName(), val, null));<a name="line.428"></a>
-<span class="sourceLineNo">429</span>            }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>         } catch (Error e) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>            // Errors should always be uncaught.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>            throw e;<a name="line.432"></a>
-<span class="sourceLineNo">433</span>         } catch (Throwable t) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>            l.add(new BeanPropertyValue(bpm, bpm.getName(), null, t));<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>      if (meta.sortProperties &amp;&amp; meta.dynaProperty != null)<a name="line.437"></a>
-<span class="sourceLineNo">438</span>         Collections.sort(l);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      return l;<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">443</span>    * Given a string containing variables of the form &lt;code&gt;"{property}"&lt;/code&gt;, replaces those variables with<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    * property values in this bean.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    *<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    * @param s The string containing variables.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    * @return A new string with variables replaced, or the same string if no variables were found.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    */<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   public String resolveVars(String s) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      return StringUtils.replaceVars(s, this);<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>   /**<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    * Returns a simple collection of properties for this bean map.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    * @return A simple collection of properties for this bean map.<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    */<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   protected Collection&lt;BeanPropertyMeta&gt; getProperties() {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      return meta.properties.values();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   }<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>   /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    * Returns all the properties associated with the bean.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    * @return A new set.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    */<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   @Override<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   public Set&lt;Entry&lt;String,Object&gt;&gt; entrySet() {<a name="line.466"></a>
+<span class="sourceLineNo">327</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    * @throws IOException Thrown by &lt;code&gt;Reader&lt;/code&gt;.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    */<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   public BeanMap&lt;T&gt; load(Reader r, ReaderParser p) throws ParseException, IOException {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      putAll(new ObjectMap(r, p));<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      return this;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>   /**<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    * Convenience method for loading this map with the contents of the specified map.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    * &lt;p&gt;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    * Identical to {@link #putAll(Map)} except as a fluent-style method.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    *<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    * @param entries The map containing the entries to add to this map.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    * @return This object (for method chaining).<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   @SuppressWarnings({"unchecked","rawtypes"})<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   public BeanMap&lt;T&gt; load(Map entries) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      putAll(entries);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      return this;<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>    * Returns the names of all properties associated with the bean.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    * &lt;p&gt;<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    * The returned set is unmodifiable.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    */<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   @Override /* Map */<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   public Set&lt;String&gt; keySet() {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      if (meta.dynaProperty == null)<a name="line.356"></a>
+<span class="sourceLineNo">357</span>         return meta.properties.keySet();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      Set&lt;String&gt; l = new LinkedHashSet&lt;String&gt;();<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      for (String p : meta.properties.keySet())<a name="line.359"></a>
+<span class="sourceLineNo">360</span>         if (! "*".equals(p))<a name="line.360"></a>
+<span class="sourceLineNo">361</span>            l.add(p);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      try {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>         l.addAll(meta.dynaProperty.getDynaMap(bean).keySet());<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      } catch (Exception e) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>         throw new BeanRuntimeException(e);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      }<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      return l;<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>   /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    * Returns the specified property on this bean map.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    * &lt;p&gt;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    * Allows you to get and set an individual property on a bean without having a<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    *    handle to the bean itself by using the {@link BeanMapEntry#getValue()}<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    *    and {@link BeanMapEntry#setValue(Object)} methods.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    * &lt;p&gt;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    * This method can also be used to get metadata on a property by<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    *    calling the {@link BeanMapEntry#getMeta()} method.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    *<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    * @param propertyName The name of the property to look up.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    * @return The bean property, or null if the bean has no such property.<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    */<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   public BeanMapEntry getProperty(String propertyName) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      BeanPropertyMeta p = getPropertyMeta(propertyName);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      if (p == null)<a name="line.385"></a>
+<span class="sourceLineNo">386</span>         return null;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      return new BeanMapEntry(this, p, propertyName);<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>   /**<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    * Returns the metadata on the specified property.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    *<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    * @param propertyName The name of the bean property.<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    * @return Metadata on the specified property, or &lt;jk&gt;null&lt;/jk&gt; if that property does not exist.<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    */<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   public BeanPropertyMeta getPropertyMeta(String propertyName) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      BeanPropertyMeta bpMeta = meta.properties.get(propertyName);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      if (bpMeta == null)<a name="line.398"></a>
+<span class="sourceLineNo">399</span>         bpMeta = meta.dynaProperty;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      return bpMeta;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>   /**<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    * Returns the {@link ClassMeta} of the wrapped bean.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    *<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    * @return The class type of the wrapped bean.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    */<a name="line.407"></a>
+<span class="sourceLineNo">408</span>   @Override /* Delagate */<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   public ClassMeta&lt;T&gt; getClassMeta() {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      return this.meta.getClassMeta();<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   }<a name="line.411"></a>
+<span class="sourceLineNo">412</span><a name="line.412"></a>
+<span class="sourceLineNo">413</span>   /**<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    * Invokes all the getters on this bean and return the values as a list of {@link BeanPropertyValue} objects.<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    * &lt;p&gt;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    * This allows a snapshot of all values to be grabbed from a bean in one call.<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    *<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    * @param ignoreNulls<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    * Don't return properties whose values are null.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    * @param prependVals<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    * Additional bean property values to prepended to this list.<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    * Any &lt;jk&gt;null&lt;/jk&gt; values in this list will be ignored.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    * @return The list of all bean property values.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   public List&lt;BeanPropertyValue&gt; getValues(final boolean ignoreNulls, BeanPropertyValue...prependVals) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      Collection&lt;BeanPropertyMeta&gt; properties = getProperties();<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      int capacity = (ignoreNulls &amp;&amp; properties.size() &gt; 10) ? 10 : properties.size() + prependVals.length;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      List&lt;BeanPropertyValue&gt; l = new ArrayList&lt;BeanPropertyValue&gt;(capacity);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      for (BeanPropertyValue v : prependVals)<a name="line.429"></a>
+<span class="sourceLineNo">430</span>         if (v != null)<a name="line.430"></a>
+<span class="sourceLineNo">431</span>            l.add(v);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      for (BeanPropertyMeta bpm : properties) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>         try {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>            if (bpm.isDyna()) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>               for (String pName : bpm.getDynaMap(bean).keySet()) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>                  Object val = bpm.get(this, pName);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>                  if (val != null || ! ignoreNulls)<a name="line.437"></a>
+<span class="sourceLineNo">438</span>                     l.add(new BeanPropertyValue(bpm, pName, val, null));<a name="line.438"></a>
+<span class="sourceLineNo">439</span>               }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>            } else {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>               Object val = bpm.get(this, null);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>               if (val != null || ! ignoreNulls)<a name="line.442"></a>
+<span class="sourceLineNo">443</span>                  l.add(new BeanPropertyValue(bpm, bpm.getName(), val, null));<a name="line.443"></a>
+<span class="sourceLineNo">444</span>            }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>         } catch (Error e) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>            // Errors should always be uncaught.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>            throw e;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>         } catch (Throwable t) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>            l.add(new BeanPropertyValue(bpm, bpm.getName(), null, t));<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>      if (meta.sortProperties &amp;&amp; meta.dynaProperty != null)<a name="line.452"></a>
+<span class="sourceLineNo">453</span>         Collections.sort(l);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      return l;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   }<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>   /**<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    * Given a string containing variables of the form &lt;code&gt;"{property}"&lt;/code&gt;, replaces those variables with<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    * property values in this bean.<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    *<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    * @param s The string containing variables.<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    * @return A new string with variables replaced, or the same string if no variables were found.<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    */<a name="line.463"></a>
+<span class="sourceLineNo">464</span>   public String resolveVars(String s) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      return StringUtils.replaceVars(s, this);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   }<a name="line.466"></a>
 <span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>      // If this bean has a dyna-property, then we need to construct the entire set before returning.<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      // Otherwise, we can create an iterator without a new data structure.<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      if (meta.dynaProperty != null) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>         Set&lt;Entry&lt;String,Object&gt;&gt; s = new LinkedHashSet&lt;Entry&lt;String,Object&gt;&gt;();<a name="line.471"></a>
-<span class="sourceLineNo">472</span>         for (BeanPropertyMeta pMeta : getProperties()) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>            if (pMeta.isDyna()) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>               try {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>                  for (Map.Entry&lt;String,Object&gt; e : pMeta.getDynaMap(bean).entrySet())<a name="line.475"></a>
-<span class="sourceLineNo">476</span>                     s.add(new BeanMapEntry(this, pMeta, e.getKey()));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>               } catch (Exception e) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>                  throw new BeanRuntimeException(e);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>               }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            } else {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>               s.add(new BeanMapEntry(this, pMeta, pMeta.getName()));<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>         return s;<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>      // Construct our own anonymous set to implement this function.<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      Set&lt;Entry&lt;String,Object&gt;&gt; s = new AbstractSet&lt;Entry&lt;String,Object&gt;&gt;() {<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>         // Get the list of properties from the meta object.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>         // Note that the HashMap.values() method caches results, so this collection<a name="line.491"></a>
-<span class="sourceLineNo">492</span>         // will really only be constructed once per bean type since the underlying<a name="line.492"></a>
-<span class="sourceLineNo">493</span>         // map never changes.<a name="line.493"></a>
-<span class="sourceLineNo">494</span>         final Collection&lt;BeanPropertyMeta&gt; pSet = getProperties();<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>         @Override /* Set */<a name="line.496"></a>
-<span class="sourceLineNo">497</span>         public Iterator&lt;java.util.Map.Entry&lt;String, Object&gt;&gt; iterator() {<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>            // Construct our own anonymous iterator that uses iterators against the meta.properties<a name="line.499"></a>
-<span class="sourceLineNo">500</span>            // map to maintain position.  This prevents us from having to construct any of our own<a name="line.500"></a>
-<span class="sourceLineNo">501</span>            // collection objects.<a name="line.501"></a>
-<span class="sourceLineNo">502</span>            return new Iterator&lt;Entry&lt;String,Object&gt;&gt;() {<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>               final Iterator&lt;BeanPropertyMeta&gt; pIterator = pSet.iterator();<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>               @Override /* Iterator */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>               public boolean hasNext() {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>                  return pIterator.hasNext();<a name="line.508"></a>
-<span class="sourceLineNo">509</span>               }<a name="line.509"></a>
+<span class="sourceLineNo">468</span>   /**<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    * Returns a simple collection of properties for this bean map.<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    * @return A simple collection of properties for this bean map.<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    */<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   protected Collection&lt;BeanPropertyMeta&gt; getProperties() {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      return meta.properties.values();<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>   /**<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    * Returns all the properties associated with the bean.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    * @return A new set.<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    */<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   @Override<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   public Set&lt;Entry&lt;String,Object&gt;&gt; entrySet() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span><a name="line.482"></a>
+<span class="sourceLineNo">483</span>      // If this bean has a dyna-property, then we need to construct the entire set before returning.<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      // Otherwise, we can create an iterator without a new data structure.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      if (meta.dynaProperty != null) {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>         Set&lt;Entry&lt;String,Object&gt;&gt; s = new LinkedHashSet&lt;Entry&lt;String,Object&gt;&gt;();<a name="line.486"></a>
+<span class="sourceLineNo">487</span>         for (BeanPropertyMeta pMeta : getProperties()) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>            if (pMeta.isDyna()) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>               try {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>                  for (Map.Entry&lt;String,Object&gt; e : pMeta.getDynaMap(bean).entrySet())<a name="line.490"></a>
+<span class="sourceLineNo">491</span>                     s.add(new BeanMapEntry(this, pMeta, e.getKey()));<a name="line.491"></a>
+<span class="sourceLineNo">492</span>               } catch (Exception e) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>                  throw new BeanRuntimeException(e);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>               }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>            } else {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>               s.add(new BeanMapEntry(this, pMeta, pMeta.getName()));<a name="line.496"></a>
+<span class="sourceLineNo">497</span>            }<a name="line.497"></a>
+<span class="sourceLineNo">498</span>         }<a name="line.498"></a>
+<span class="sourceLineNo">499</span>         return s;<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      }<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span>      // Construct our own anonymous set to implement this function.<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      Set&lt;Entry&lt;String,Object&gt;&gt; s = new AbstractSet&lt;Entry&lt;String,Object&gt;&gt;() {<a name="line.503"></a>
+<span class="sourceLineNo">504</span><a name="line.504"></a>
+<span class="sourceLineNo">505</span>         // Get the list of properties from the meta object.<a name="line.505"></a>
+<span class="sourceLineNo">506</span>         // Note that the HashMap.values() method caches results, so this collection<a name="line.506"></a>
+<span class="sourceLineNo">507</span>         // will really only be constructed once per bean type since the underlying<a name="line.507"></a>
+<span class="sourceLineNo">508</span>         // map never changes.<a name="line.508"></a>
+<span class="sourceLineNo">509</span>         final Collection&lt;BeanPropertyMeta&gt; pSet = getProperties();<a name="line.509"></a>
 <span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>               @Override /* Iterator */<a name="line.511"></a>
-<span class="sourceLineNo">512</span>               public Map.Entry&lt;String, Object&gt; next() {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>                  return new BeanMapEntry(BeanMap.this, pIterator.next(), null);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>               }<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>               @Override /* Iterator */<a name="line.516"></a>
-<span class="sourceLineNo">517</span>               public void remove() {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>                  throw new UnsupportedOperationException("Cannot remove item from iterator.");<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><a name="line.522"></a>
-<span class="sourceLineNo">523</span>         @Override /* Set */<a name="line.523"></a>
-<span class="sourceLineNo">524</span>         public int size() {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>            return pSet.size();<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>      return s;<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>   @SuppressWarnings("unchecked")<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   void setBean(Object bean) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      this.bean = (T)bean;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   }<a name="line.535"></a>
-<span class="sourceLineNo">536</span>}<a name="line.536"></a>
+<span class="sourceLineNo">511</span>         @Override /* Set */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>         public Iterator&lt;java.util.Map.Entry&lt;String, Object&gt;&gt; iterator() {<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class="sourceLineNo">514</span>            // Construct our own anonymous iterator that uses iterators against the meta.properties<a name="line.514"></a>
+<span class="sourceLineNo">515</span>            // map to maintain position.  This prevents us from having to construct any of our own<a name="line.515"></a>
+<span class="sourceLineNo">516</span>            // collection objects.<a name="line.516"></a>
+<span class="sourceLineNo">517</span>            return new Iterator&lt;Entry&lt;String,Object&gt;&gt;() {<a name="line.517"></a>
+<span class="sourceLineNo">518</span><a name="line.518"></a>
+<span class="sourceLineNo">519</span>               final Iterator&lt;BeanPropertyMeta&gt; pIterator = pSet.iterator();<a name="line.519"></a>
+<span class="sourceLineNo">520</span><a name="line.520"></a>
+<span class="sourceLineNo">521</span>               @Override /* Iterator */<a name="line.521"></a>
+<span class="sourceLineNo">522</span>               public boolean hasNext() {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>                  return pIterator.hasNext();<a name="line.523"></a>
+<span class="sourceLineNo">524</span>               }<a name="line.524"></a>
+<span class="sourceLineNo">525</span><a name="line.525"></a>
+<span class="sourceLineNo">526</span>               @Override /* Iterator */<a name="line.526"></a>
+<span class="sourceLineNo">527</span>               public Map.Entry&lt;String, Object&gt; next() {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>                  return new BeanMapEntry(BeanMap.this, pIterator.next(), null);<a name="line.528"></a>
+<span class="sourceLineNo">529</span>               }<a name="line.529"></a>
+<span class="sourceLineNo">530</span><a name="line.530"></a>
+<span class="sourceLineNo">531</span>               @Override /* Iterator */<a name="line.531"></a>
+<span class="sourceLineNo">532</span>               public void remove() {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>                  throw new UnsupportedOperationException("Cannot remove item from iterator.");<a name="line.533"></a>
+<span class="sourceLineNo">534</span>               }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>            };<a name="line.535"></a>
+<span class="sourceLineNo">536</span>         }<a name="line.536"></a>
+<span class="sourceLineNo">537</span><a name="line.537"></a>
+<span class="sourceLineNo">538</span>         @Override /* Set */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>         public int size() {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>            return pSet.size();<a name="line.540"></a>
+<span class="sourceLineNo">541</span>         }<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      };<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>      return s;<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>   @SuppressWarnings("unchecked")<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   void setBean(Object bean) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      this.bean = (T)bean;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>}<a name="line.551"></a>
 
 
 


[03/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/rest/converters/Queryable.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/converters/Queryable.html b/content/site/apidocs/src-html/org/apache/juneau/rest/converters/Queryable.html
index cbd94df..338bfc5 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/converters/Queryable.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/converters/Queryable.html
@@ -20,86 +20,54 @@
 <span class="sourceLineNo">012</span>// ***************************************************************************************************************************<a name="line.12"></a>
 <span class="sourceLineNo">013</span>package org.apache.juneau.rest.converters;<a name="line.13"></a>
 <span class="sourceLineNo">014</span><a name="line.14"></a>
-<span class="sourceLineNo">015</span>import static javax.servlet.http.HttpServletResponse.*;<a name="line.15"></a>
-<span class="sourceLineNo">016</span><a name="line.16"></a>
-<span class="sourceLineNo">017</span>import java.util.*;<a name="line.17"></a>
+<span class="sourceLineNo">015</span>import org.apache.juneau.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span>import org.apache.juneau.rest.*;<a name="line.16"></a>
+<span class="sourceLineNo">017</span>import org.apache.juneau.utils.*;<a name="line.17"></a>
 <span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.juneau.*;<a name="line.19"></a>
-<span class="sourceLineNo">020</span>import org.apache.juneau.parser.*;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.juneau.rest.*;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.juneau.serializer.*;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.juneau.utils.*;<a name="line.23"></a>
-<span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>/**<a name="line.25"></a>
-<span class="sourceLineNo">026</span> * Converter for enablement of {@link PojoQuery} support on response objects returned by a &lt;code&gt;@RestMethod&lt;/code&gt; method.<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * &lt;p&gt;<a name="line.27"></a>
-<span class="sourceLineNo">028</span> * When enabled, objects in a POJO tree can be filtered using the functionality described in the {@link PojoQuery}<a name="line.28"></a>
-<span class="sourceLineNo">029</span> *    class.<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * &lt;p&gt;<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * The following HTTP request parameters are available for tabular data (e.g. {@code Collections} of {@code Maps}, arrays of beans, etc...):<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * &lt;ul class='spaced-list'&gt;<a name="line.32"></a>
-<span class="sourceLineNo">033</span> *    &lt;li&gt;&lt;b&gt;&amp;amp;q=&lt;i&gt;JSON-object&lt;/i&gt;&lt;/b&gt; - Query parameter.  Only return rows that match the specified search string. &lt;br&gt;<a name="line.33"></a>
-<span class="sourceLineNo">034</span> *          The JSON object keys are column names, and the values are search parameter strings.&lt;br&gt;<a name="line.34"></a>
-<span class="sourceLineNo">035</span> *          Example:  &lt;code&gt;&amp;amp;s=(name=Bill*,birthDate=&amp;gt;2000)&lt;/code&gt;<a name="line.35"></a>
-<span class="sourceLineNo">036</span> *    &lt;li&gt;&lt;b&gt;&amp;amp;v=&lt;i&gt;JSON-array or comma-delimited list&lt;/i&gt;&lt;/b&gt; - View parameter.  Only return the specified columns.&lt;br&gt;<a name="line.36"></a>
-<span class="sourceLineNo">037</span> *          Example:  &lt;code&gt;&amp;amp;v=(name,birthDate)&lt;/code&gt;<a name="line.37"></a>
-<span class="sourceLineNo">038</span> *    &lt;li&gt;&lt;b&gt;&amp;amp;s=&lt;i&gt;JSON-object&lt;/i&gt;&lt;/b&gt; - Sort parameter.  Sort the results by the specified columns.&lt;br&gt;<a name="line.38"></a>
-<span class="sourceLineNo">039</span> *          The JSON object keys are the column names, and the values are either {@code 'A'} for ascending or {@code 'D'} for descending.<a name="line.39"></a>
-<span class="sourceLineNo">040</span> *          Example:  &lt;code&gt;&amp;amp;s=(name=A,birthDate=D)&lt;/code&gt;<a name="line.40"></a>
-<span class="sourceLineNo">041</span> *    &lt;li&gt;&lt;b&gt;&amp;amp;i=&lt;i&gt;true/false&lt;/i&gt;&lt;/b&gt; - Case-insensitive parameter.  Specify &lt;jk&gt;true&lt;/jk&gt; for case-insensitive matching on the {@code &amp;amp;q} parameter.<a name="line.41"></a>
-<span class="sourceLineNo">042</span> *    &lt;li&gt;&lt;b&gt;&amp;amp;p=&lt;i&gt;number&lt;/i&gt;&lt;/b&gt; - Position parameter.  Only return rows starting at the specified index position (zero-indexed).  Default is {@code 0}.<a name="line.42"></a>
-<span class="sourceLineNo">043</span> *    &lt;li&gt;&lt;b&gt;&amp;amp;q=&lt;i&gt;number&lt;/i&gt;&lt;/b&gt; - Limit parameter.  Only return the specified number of rows. Default is {@code 0} (meaning return all rows).<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * &lt;/ul&gt;<a name="line.44"></a>
-<span class="sourceLineNo">045</span> *<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * &lt;p&gt;<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * The &lt;b&gt;&amp;amp;v&lt;/b&gt; parameter can also be used on {@code Maps} and beans.<a name="line.47"></a>
-<span class="sourceLineNo">048</span> *<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * &lt;p&gt;<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * See {@link PojoQuery} for additional information on filtering POJO models.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>public final class Queryable implements RestConverter {<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>   @Override /* RestConverter */<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   @SuppressWarnings({ "unchecked", "rawtypes" })<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   public Object convert(RestRequest req, Object o, ClassMeta cm) {<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      if (o == null)<a name="line.57"></a>
-<span class="sourceLineNo">058</span>         return null;<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>      try {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>         RequestQuery q = req.getQuery();<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>         // If no actual filtering parameters have been passed in, and there is no map augmenter specified,<a name="line.63"></a>
-<span class="sourceLineNo">064</span>         // then just pass the original object back.<a name="line.64"></a>
-<span class="sourceLineNo">065</span>         if (q.containsAnyKeys("q","v","s","g","i","p","l")) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>            BeanSession session = req.getBeanSession();<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>            if (cm.getPojoSwap() != null)<a name="line.68"></a>
-<span class="sourceLineNo">069</span>               o = cm.getPojoSwap().swap(session, o);<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>            PojoQuery f = new PojoQuery(o, session);<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>            if (o instanceof Collection || o.getClass().isArray()) {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>               ObjectMap query = q.get("q", ObjectMap.class);<a name="line.74"></a>
-<span class="sourceLineNo">075</span>               List&lt;String&gt; view = q.get("v", List.class, String.class);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>               List sort = q.get("s", List.class, String.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>               boolean ignoreCase = q.get("i", false, Boolean.class);<a name="line.77"></a>
-<span class="sourceLineNo">078</span>               int pos = q.get("p", 0, Integer.class);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>               int limit = q.get("l", 0, Integer.class);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>               o = f.filterCollection(query, view, sort, pos, limit, ignoreCase);<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>            } else {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>               List&lt;String&gt; view = q.get("v", List.class, String.class);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>               o = f.filterMap(view);<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>         return o;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      } catch (SerializeException e) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>         throw new RestException(SC_BAD_REQUEST, e);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      } catch (ParseException e) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>         throw new RestException(SC_BAD_REQUEST, e);<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">019</span>/**<a name="line.19"></a>
+<span class="sourceLineNo">020</span> * Converter for enablement of {@link PojoQuery} support on response objects returned by a &lt;code&gt;@RestMethod&lt;/code&gt; method.<a name="line.20"></a>
+<span class="sourceLineNo">021</span> * &lt;p&gt;<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * When enabled, objects in a POJO tree can be filtered using the functionality described in the {@link PojoQuery}<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *    class.<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * &lt;p&gt;<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * The following HTTP request parameters are available for tabular data (e.g. {@code Collections} of {@code Maps}, arrays of beans, etc...):<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * &lt;ul class='spaced-list'&gt;<a name="line.26"></a>
+<span class="sourceLineNo">027</span> *    &lt;li&gt;&lt;code&gt;&amp;amp;s=&lt;/code&gt; Search arguments.<a name="line.27"></a>
+<span class="sourceLineNo">028</span> *          &lt;br&gt;Comma-delimited list of key/value pairs representing column names and search tokens.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> *          &lt;br&gt;Example:  &lt;js&gt;"&amp;amp;s=name=Bill*,birthDate&amp;gt;2000"&lt;/js&gt;<a name="line.29"></a>
+<span class="sourceLineNo">030</span> *    &lt;li&gt;&lt;code&gt;&amp;amp;v=&lt;/code&gt; Visible columns.<a name="line.30"></a>
+<span class="sourceLineNo">031</span> *          &lt;br&gt;Comma-delimited list of column names to display.<a name="line.31"></a>
+<span class="sourceLineNo">032</span> *          &lt;br&gt;Example:  &lt;js&gt;"&amp;amp;v=name,birthDate"&lt;/js&gt;<a name="line.32"></a>
+<span class="sourceLineNo">033</span> *    &lt;li&gt;&lt;code&gt;&amp;amp;o=&lt;/code&gt; Sort commands.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *          &lt;br&gt;Comma-delimited list of columns to sort by.<a name="line.34"></a>
+<span class="sourceLineNo">035</span> *          &lt;br&gt;Column names can be suffixed with &lt;js&gt;'+'&lt;/js&gt; or &lt;js&gt;'-'&lt;/js&gt; to indicate ascending or descending order.<a name="line.35"></a>
+<span class="sourceLineNo">036</span> *          &lt;br&gt;The default is ascending order.<a name="line.36"></a>
+<span class="sourceLineNo">037</span> *          &lt;br&gt;Example:  &lt;js&gt;"&amp;amp;o=name,birthDate-"&lt;/js&gt;<a name="line.37"></a>
+<span class="sourceLineNo">038</span> *    &lt;li&gt;&lt;code&gt;&amp;amp;i=&lt;/code&gt; Case-insensitive parameter.<a name="line.38"></a>
+<span class="sourceLineNo">039</span> *          &lt;br&gt;Boolean flag for case-insensitive matching on the search parameters.<a name="line.39"></a>
+<span class="sourceLineNo">040</span> *    &lt;li&gt;&lt;code&gt;&amp;amp;p=&lt;/code&gt; - Position parameter.<a name="line.40"></a>
+<span class="sourceLineNo">041</span> *          &lt;br&gt;Only return rows starting at the specified index position (zero-indexed).<a name="line.41"></a>
+<span class="sourceLineNo">042</span> *          &lt;br&gt;Default is {@code 0}.<a name="line.42"></a>
+<span class="sourceLineNo">043</span> *    &lt;li&gt;&lt;code&gt;&amp;amp;l=&lt;/code&gt; Limit parameter.<a name="line.43"></a>
+<span class="sourceLineNo">044</span> *          &lt;br&gt;Only return the specified number of rows.<a name="line.44"></a>
+<span class="sourceLineNo">045</span> *          &lt;br&gt;Default is {@code 0} (meaning return all rows).<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * &lt;/ul&gt;<a name="line.46"></a>
+<span class="sourceLineNo">047</span> *<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * &lt;p&gt;<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * See {@link PojoQuery} for additional information on filtering POJO models.<a name="line.49"></a>
+<span class="sourceLineNo">050</span> */<a name="line.50"></a>
+<span class="sourceLineNo">051</span>public final class Queryable implements RestConverter {<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>   @Override /* RestConverter */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   public Object convert(RestRequest req, Object o, ClassMeta&lt;?&gt; cm) {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>      if (o == null)<a name="line.55"></a>
+<span class="sourceLineNo">056</span>         return null;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      SearchArgs searchArgs = req.getQuery().getSearchArgs();<a name="line.57"></a>
+<span class="sourceLineNo">058</span>      if (searchArgs == null)<a name="line.58"></a>
+<span class="sourceLineNo">059</span>         return o;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      return new PojoQuery(o, req.getBeanSession()).filter(searchArgs);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/rest/response/DefaultHandler.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/response/DefaultHandler.html b/content/site/apidocs/src-html/org/apache/juneau/rest/response/DefaultHandler.html
index dfc897c..4159aa3 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/response/DefaultHandler.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/response/DefaultHandler.html
@@ -46,7 +46,7 @@
 <span class="sourceLineNo">038</span>   @Override /* ResponseHandler */<a name="line.38"></a>
 <span class="sourceLineNo">039</span>   public boolean handle(RestRequest req, RestResponse res, Object output) throws IOException, RestException {<a name="line.39"></a>
 <span class="sourceLineNo">040</span>      SerializerGroup g = res.getSerializerGroup();<a name="line.40"></a>
-<span class="sourceLineNo">041</span>      String accept = req.getHeaders().getFirst("Accept", "");<a name="line.41"></a>
+<span class="sourceLineNo">041</span>      String accept = req.getHeaders().getString("Accept", "");<a name="line.41"></a>
 <span class="sourceLineNo">042</span>      SerializerMatch sm = g.getSerializerMatch(accept);<a name="line.42"></a>
 <span class="sourceLineNo">043</span>      if (sm != null) {<a name="line.43"></a>
 <span class="sourceLineNo">044</span>         Serializer s = sm.getSerializer();<a name="line.44"></a>
@@ -95,7 +95,7 @@
 <span class="sourceLineNo">087</span>      } else {<a name="line.87"></a>
 <span class="sourceLineNo">088</span>         throw new RestException(SC_NOT_ACCEPTABLE,<a name="line.88"></a>
 <span class="sourceLineNo">089</span>            "Unsupported media-type in request header ''Accept'': ''{0}''\n\tSupported media-types: {1}",<a name="line.89"></a>
-<span class="sourceLineNo">090</span>            req.getHeaders().getFirst("Accept", ""), g.getSupportedMediaTypes()<a name="line.90"></a>
+<span class="sourceLineNo">090</span>            req.getHeaders().getString("Accept", ""), g.getSupportedMediaTypes()<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>      return true;<a name="line.93"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/rest/vars/RequestVar.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/vars/RequestVar.html b/content/site/apidocs/src-html/org/apache/juneau/rest/vars/RequestVar.html
index b432f34..7020aef 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/vars/RequestVar.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/vars/RequestVar.html
@@ -80,9 +80,9 @@
 <span class="sourceLineNo">072</span>               if ("path".equals(prefix))<a name="line.72"></a>
 <span class="sourceLineNo">073</span>                  return req.getPathMatch().get(remainder);<a name="line.73"></a>
 <span class="sourceLineNo">074</span>               if ("query".equals(prefix))<a name="line.74"></a>
-<span class="sourceLineNo">075</span>                  return req.getQuery().getFirst(remainder);<a name="line.75"></a>
+<span class="sourceLineNo">075</span>                  return req.getQuery().getString(remainder);<a name="line.75"></a>
 <span class="sourceLineNo">076</span>               if ("formData".equals(prefix))<a name="line.76"></a>
-<span class="sourceLineNo">077</span>                  return req.getFormData().getFirst(remainder);<a name="line.77"></a>
+<span class="sourceLineNo">077</span>                  return req.getFormData().getString(remainder);<a name="line.77"></a>
 <span class="sourceLineNo">078</span>               if ("header".equals(prefix))<a name="line.78"></a>
 <span class="sourceLineNo">079</span>                  return req.getHeader(remainder);<a name="line.79"></a>
 <span class="sourceLineNo">080</span>               if ("attribute".equals(prefix))<a name="line.80"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/rest/widget/QueryWidget.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/widget/QueryWidget.html b/content/site/apidocs/src-html/org/apache/juneau/rest/widget/QueryWidget.html
new file mode 100644
index 0000000..a831c30
--- /dev/null
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/widget/QueryWidget.html
@@ -0,0 +1,202 @@
+<!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.widget;<a name="line.13"></a>
+<span class="sourceLineNo">014</span><a name="line.14"></a>
+<span class="sourceLineNo">015</span>import org.apache.juneau.internal.*;<a name="line.15"></a>
+<span class="sourceLineNo">016</span>import org.apache.juneau.rest.*;<a name="line.16"></a>
+<span class="sourceLineNo">017</span>import org.apache.juneau.rest.converters.*;<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> * Adds a &lt;code&gt;QUERY&lt;/code&gt; link to the page that allows you to perform search/view/sort/paging on the page data.<a name="line.20"></a>
+<span class="sourceLineNo">021</span> * &lt;p&gt;<a name="line.21"></a>
+<span class="sourceLineNo">022</span> * A typical usage of the query widget is to include it as a navigation link as shown in the example below<a name="line.22"></a>
+<span class="sourceLineNo">023</span> *    pulled from the &lt;code&gt;PetStoreResource&lt;/code&gt; example:<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * &lt;p class='bcode'&gt;<a name="line.24"></a>
+<span class="sourceLineNo">025</span> *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.25"></a>
+<span class="sourceLineNo">026</span> *       widgets={<a name="line.26"></a>
+<span class="sourceLineNo">027</span> *          QueryWidget.&lt;jk&gt;class&lt;/jk&gt;<a name="line.27"></a>
+<span class="sourceLineNo">028</span> *       },<a name="line.28"></a>
+<span class="sourceLineNo">029</span> *       htmldoc=&lt;ja&gt;@HtmlDoc&lt;/ja&gt;(<a name="line.29"></a>
+<span class="sourceLineNo">030</span> *          links=&lt;js&gt;"{up:'...',options:'...',query:'$W{query}',source:'...'}"&lt;/js&gt;<a name="line.30"></a>
+<span class="sourceLineNo">031</span> *       )<a name="line.31"></a>
+<span class="sourceLineNo">032</span> *    )<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * &lt;/p&gt;<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * &lt;p&gt;<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * In the above example, this adds a &lt;code&gt;QUERY&lt;/code&gt; that displays a search popup that can be used for<a name="line.35"></a>
+<span class="sourceLineNo">036</span> *    filtering the page results...<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * &lt;p&gt;<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * &lt;img class='bordered' src='doc-files/PetStore_Query.png'&gt;<a name="line.38"></a>
+<span class="sourceLineNo">039</span> * &lt;p&gt;<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * Tooltips are provided by hovering over the field names.<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * &lt;p&gt;<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * &lt;img class='bordered' src='doc-files/PetStore_Query_tooltip.png'&gt;<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * &lt;p&gt;<a name="line.43"></a>
+<span class="sourceLineNo">044</span> * When submitted, the form submits a GET request against the current URI with special GET search API query parameters.<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * (e.g. &lt;js&gt;"?s=column1=Foo*&amp;amp;v=column1,column2&amp;amp;o=column1,column2-&amp;amp;p=100&amp;amp;l=100"&lt;/js&gt;).<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * &lt;p&gt;<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * The search arguments can be retrieved programmatically using {@link RequestQuery#getSearchArgs()}.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * &lt;p&gt;<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * Typically, the search functionality is implemented by applying the predefined {@link Queryable} converter on the<a name="line.49"></a>
+<span class="sourceLineNo">050</span> *    method that's returning a 2-dimensional table of POJOs that you wish to filter:<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * &lt;p class='bcode'&gt;<a name="line.51"></a>
+<span class="sourceLineNo">052</span> *    &lt;ja&gt;@RestMethod&lt;/ja&gt;(<a name="line.52"></a>
+<span class="sourceLineNo">053</span> *       name=&lt;js&gt;"GET"&lt;/js&gt;,<a name="line.53"></a>
+<span class="sourceLineNo">054</span> *       path=&lt;js&gt;"/"&lt;/js&gt;,<a name="line.54"></a>
+<span class="sourceLineNo">055</span> *       converters=Queryable.&lt;jk&gt;class&lt;/jk&gt;<a name="line.55"></a>
+<span class="sourceLineNo">056</span> *    )<a name="line.56"></a>
+<span class="sourceLineNo">057</span> *    &lt;jk&gt;public&lt;/jk&gt; Collection&amp;lt;Pet&amp;gt; getPets() {<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * &lt;/p&gt;<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * &lt;p&gt;<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * The following shows various search arguments and their results on the page:<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * &lt;table style='width:auto'&gt;<a name="line.61"></a>
+<span class="sourceLineNo">062</span> *    &lt;tr&gt;<a name="line.62"></a>
+<span class="sourceLineNo">063</span> *       &lt;th&gt;Search type&lt;/th&gt;&lt;th&gt;Query arguments&lt;/th&gt;&lt;th&gt;Query results&lt;/th&gt;<a name="line.63"></a>
+<span class="sourceLineNo">064</span> *    &lt;/tr&gt;<a name="line.64"></a>
+<span class="sourceLineNo">065</span> *    &lt;tr&gt;<a name="line.65"></a>
+<span class="sourceLineNo">066</span> *       &lt;td&gt;No arguments&lt;/td&gt;<a name="line.66"></a>
+<span class="sourceLineNo">067</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_q1.png'&gt;&lt;/td&gt;<a name="line.67"></a>
+<span class="sourceLineNo">068</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_r1.png'&gt;&lt;/td&gt;<a name="line.68"></a>
+<span class="sourceLineNo">069</span> *    &lt;/tr&gt;<a name="line.69"></a>
+<span class="sourceLineNo">070</span> *    &lt;tr&gt;<a name="line.70"></a>
+<span class="sourceLineNo">071</span> *       &lt;td&gt;String search&lt;/td&gt;<a name="line.71"></a>
+<span class="sourceLineNo">072</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_q2.png'&gt;&lt;/td&gt;<a name="line.72"></a>
+<span class="sourceLineNo">073</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_r2.png'&gt;&lt;/td&gt;<a name="line.73"></a>
+<span class="sourceLineNo">074</span> *    &lt;/tr&gt;<a name="line.74"></a>
+<span class="sourceLineNo">075</span> *    &lt;tr&gt;<a name="line.75"></a>
+<span class="sourceLineNo">076</span> *       &lt;td&gt;Numeric range&lt;/td&gt;<a name="line.76"></a>
+<span class="sourceLineNo">077</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_q3.png'&gt;&lt;/td&gt;<a name="line.77"></a>
+<span class="sourceLineNo">078</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_r3.png'&gt;&lt;/td&gt;<a name="line.78"></a>
+<span class="sourceLineNo">079</span> *    &lt;/tr&gt;<a name="line.79"></a>
+<span class="sourceLineNo">080</span> *    &lt;tr&gt;<a name="line.80"></a>
+<span class="sourceLineNo">081</span> *       &lt;td&gt;ANDed terms&lt;/td&gt;<a name="line.81"></a>
+<span class="sourceLineNo">082</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_q4.png'&gt;&lt;/td&gt;<a name="line.82"></a>
+<span class="sourceLineNo">083</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_r4.png'&gt;&lt;/td&gt;<a name="line.83"></a>
+<span class="sourceLineNo">084</span> *    &lt;/tr&gt;<a name="line.84"></a>
+<span class="sourceLineNo">085</span> *    &lt;tr&gt;<a name="line.85"></a>
+<span class="sourceLineNo">086</span> *       &lt;td&gt;Date range (entire year)&lt;/td&gt;<a name="line.86"></a>
+<span class="sourceLineNo">087</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_q8.png'&gt;&lt;/td&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_r8.png'&gt;&lt;/td&gt;<a name="line.88"></a>
+<span class="sourceLineNo">089</span> *    &lt;/tr&gt;<a name="line.89"></a>
+<span class="sourceLineNo">090</span> *    &lt;tr&gt;<a name="line.90"></a>
+<span class="sourceLineNo">091</span> *       &lt;td&gt;Date range&lt;/td&gt;<a name="line.91"></a>
+<span class="sourceLineNo">092</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_q9.png'&gt;&lt;/td&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_r9.png'&gt;&lt;/td&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> *    &lt;/tr&gt;<a name="line.94"></a>
+<span class="sourceLineNo">095</span> *    &lt;tr&gt;<a name="line.95"></a>
+<span class="sourceLineNo">096</span> *       &lt;td&gt;Date range&lt;/td&gt;<a name="line.96"></a>
+<span class="sourceLineNo">097</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_q10.png'&gt;&lt;/td&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_r10.png'&gt;&lt;/td&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> *    &lt;/tr&gt;<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *    &lt;tr&gt;<a name="line.100"></a>
+<span class="sourceLineNo">101</span> *       &lt;td&gt;Hide columns&lt;/td&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_q5.png'&gt;&lt;/td&gt;<a name="line.102"></a>
+<span class="sourceLineNo">103</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_r5.png'&gt;&lt;/td&gt;<a name="line.103"></a>
+<span class="sourceLineNo">104</span> *    &lt;/tr&gt;<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *    &lt;tr&gt;<a name="line.105"></a>
+<span class="sourceLineNo">106</span> *       &lt;td&gt;Sort&lt;/td&gt;<a name="line.106"></a>
+<span class="sourceLineNo">107</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_q6.png'&gt;&lt;/td&gt;<a name="line.107"></a>
+<span class="sourceLineNo">108</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_r6.png'&gt;&lt;/td&gt;<a name="line.108"></a>
+<span class="sourceLineNo">109</span> *    &lt;/tr&gt;<a name="line.109"></a>
+<span class="sourceLineNo">110</span> *    &lt;tr&gt;<a name="line.110"></a>
+<span class="sourceLineNo">111</span> *       &lt;td&gt;Sort descending&lt;/td&gt;<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_q7.png'&gt;&lt;/td&gt;<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *       &lt;td&gt;&lt;img class='bordered' src='doc-files/PetStore_Query_r7.png'&gt;&lt;/td&gt;<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *    &lt;/tr&gt;<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * &lt;/table&gt;<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>public class QueryWidget extends Widget {<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>   @Override<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   public String getName() {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      return "query";<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 /* Widget */<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   public String resolve(RestRequest req) throws Exception {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      // Note we're stripping off the license header.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      return IOUtils.read(getClass().getResourceAsStream("QueryWidget.html")).replaceFirst("(?s)&lt;!--(.*?)--&gt;\\s*", "");<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/serializer/SerializerGroup.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/serializer/SerializerGroup.html b/content/site/apidocs/src-html/org/apache/juneau/serializer/SerializerGroup.html
index 1a8a2d4..88331a3 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/serializer/SerializerGroup.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/serializer/SerializerGroup.html
@@ -76,143 +76,154 @@
 <span class="sourceLineNo">068</span>   private final Serializer[] mediaTypeSerializers;<a name="line.68"></a>
 <span class="sourceLineNo">069</span>   private final List&lt;Serializer&gt; serializers;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>   private final PropertyStore propertyStore;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>   /**<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    * Constructor.<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    *<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    * @param propertyStore The modifiable properties that were used to initialize the serializers.<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    * A snapshot of these will be made so that we can clone and modify this group.<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    * @param serializers The serializers defined in this group.<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    * The order is important because they will be tried in reverse order (e.g.<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    *    newer first) in which they will be tried to match against media types.<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   public SerializerGroup(PropertyStore propertyStore, Serializer[] serializers) {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      this.propertyStore = PropertyStore.create(propertyStore);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      this.serializers = Collections.unmodifiableList(new ArrayList&lt;Serializer&gt;(Arrays.asList(serializers)));<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>      List&lt;MediaType&gt; lmt = new ArrayList&lt;MediaType&gt;();<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      List&lt;Serializer&gt; l = new ArrayList&lt;Serializer&gt;();<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      for (Serializer s : serializers) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>         for (MediaType m: s.getMediaTypes()) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>            lmt.add(m);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>            l.add(s);<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><a name="line.93"></a>
-<span class="sourceLineNo">094</span>      this.mediaTypes = lmt.toArray(new MediaType[lmt.size()]);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      this.mediaTypesList = Collections.unmodifiableList(lmt);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      this.mediaTypeSerializers = l.toArray(new Serializer[l.size()]);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   }<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>   /**<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    * Searches the group for a serializer that can handle the specified &lt;code&gt;Accept&lt;/code&gt; value.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    * &lt;p&gt;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    * The &lt;code&gt;accept&lt;/code&gt; value complies with the syntax described in RFC2616, Section 14.1, as described below:<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    * &lt;p class='bcode'&gt;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    *    Accept         = "Accept" ":"<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    *                      #( media-range [ accept-params ] )<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    *<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    *    media-range    = ( "*\/*"<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    *                      | ( type "/" "*" )<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    *                      | ( type "/" subtype )<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    *                      ) *( ";" parameter )<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    *    accept-params  = ";" "q" "=" qvalue *( accept-extension )<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    *    accept-extension = ";" token [ "=" ( token | quoted-string ) ]<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    * &lt;/p&gt;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    * &lt;p&gt;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    * The general idea behind having the serializer resolution be a two-step process is so that<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    *    the matched media type can be passed in to the {@link WriterSerializer#doSerialize(SerializerSession, Object)} method.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    * For example...<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    * &lt;p class='bcode'&gt;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    *    String acceptHeaderValue = request.getHeader(&lt;js&gt;"Accept"&lt;/js&gt;);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    *    String matchingMediaType = group.findMatch(acceptHeaderValue);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    *    if (matchingMediaType == &lt;jk&gt;null&lt;/jk&gt;)<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    *       &lt;jk&gt;throw new&lt;/jk&gt; RestException(&lt;jsf&gt;SC_NOT_ACCEPTABLE&lt;/jsf&gt;);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    *    WriterSerializer s = (WriterSerializer)group.getSerializer(matchingMediaType);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    *    s.serialize(getPojo(), response.getWriter(), response.getProperties(), matchingMediaType);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    * &lt;/p&gt;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    *<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    * @param acceptHeader The HTTP &lt;l&gt;Accept&lt;/l&gt; header string.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    * @return The serializer and media type that matched the accept header, or &lt;jk&gt;null&lt;/jk&gt; if no match was made.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    */<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   public SerializerMatch getSerializerMatch(String acceptHeader) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      SerializerMatch sm = cache.get(acceptHeader);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      if (sm != null)<a name="line.132"></a>
-<span class="sourceLineNo">133</span>         return sm;<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>      Accept a = Accept.forString(acceptHeader);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      int match = a.findMatch(mediaTypes);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      if (match &gt;= 0) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>         sm = new SerializerMatch(mediaTypes[match], mediaTypeSerializers[match]);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>         cache.putIfAbsent(acceptHeader, sm);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>      return cache.get(acceptHeader);<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>    * Same as {@link #getSerializerMatch(String)} but matches using a {@link MediaType} instance.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    *<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    * @param mediaType The HTTP media type.<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    * @return The serializer and media type that matched the media type, or &lt;jk&gt;null&lt;/jk&gt; if no match was made.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   public SerializerMatch getSerializerMatch(MediaType mediaType) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      return getSerializerMatch(mediaType.toString());<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   }<a name="line.153"></a>
-<span class="sourceLineNo">154</span><a name="line.154"></a>
-<span class="sourceLineNo">155</span>   /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    * Same as {@link #getSerializerMatch(String)} but returns just the matched serializer.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    *<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    * @param acceptHeader The HTTP &lt;l&gt;Accept&lt;/l&gt; header string.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    * @return The serializer that matched the accept header, or &lt;jk&gt;null&lt;/jk&gt; if no match was made.<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    */<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   public Serializer getSerializer(String acceptHeader) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      SerializerMatch sm = getSerializerMatch(acceptHeader);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      return sm == null ? null : sm.getSerializer();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>   /**<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    * Same as {@link #getSerializerMatch(MediaType)} but returns just the matched serializer.<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    *<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    * @param mediaType The HTTP media type.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    * @return The serializer that matched the accept header, or &lt;jk&gt;null&lt;/jk&gt; if no match was made.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    */<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   public Serializer getSerializer(MediaType mediaType) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      if (mediaType == null)<a name="line.173"></a>
-<span class="sourceLineNo">174</span>         return null;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      return getSerializer(mediaType.toString());<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   }<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>   /**<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    * Returns the media types that all serializers in this group can handle.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    * &lt;p&gt;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    * Entries are ordered in the same order as the serializers in the group.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    *<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    * @return An unmodifiable list of media types.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    */<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   public List&lt;MediaType&gt; getSupportedMediaTypes() {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      return mediaTypesList;<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>    * Returns a copy of the property store that was used to create the serializers in this group.<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    * This method returns a new factory each time so is somewhat expensive.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    *<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    * @return A new copy of the property store passed in to the constructor.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    */<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   public PropertyStore createPropertyStore() {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      return PropertyStore.create(propertyStore);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   }<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>   /**<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    * Returns a copy of the serializers in this group.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    *<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    * @return An unmodifiable list of serializers in this group.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    */<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   public List&lt;Serializer&gt; getSerializers() {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return serializers;<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">071</span>   private final BeanContext beanContext;<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>    * Constructor.<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    *<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    * @param propertyStore The modifiable properties that were used to initialize the serializers.<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    * A snapshot of these will be made so that we can clone and modify this group.<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    * @param serializers The serializers defined in this group.<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    * The order is important because they will be tried in reverse order (e.g.<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    *    newer first) in which they will be tried to match against media types.<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    */<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   public SerializerGroup(PropertyStore propertyStore, Serializer[] serializers) {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      this.propertyStore = PropertyStore.create(propertyStore);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      this.beanContext = propertyStore.getBeanContext();<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      this.serializers = Collections.unmodifiableList(new ArrayList&lt;Serializer&gt;(Arrays.asList(serializers)));<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>      List&lt;MediaType&gt; lmt = new ArrayList&lt;MediaType&gt;();<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      List&lt;Serializer&gt; l = new ArrayList&lt;Serializer&gt;();<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      for (Serializer s : serializers) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>         for (MediaType m: s.getMediaTypes()) {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>            lmt.add(m);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>            l.add(s);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>         }<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      }<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>      this.mediaTypes = lmt.toArray(new MediaType[lmt.size()]);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      this.mediaTypesList = Collections.unmodifiableList(lmt);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      this.mediaTypeSerializers = l.toArray(new Serializer[l.size()]);<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>   /**<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    * Searches the group for a serializer that can handle the specified &lt;code&gt;Accept&lt;/code&gt; value.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    * &lt;p&gt;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    * The &lt;code&gt;accept&lt;/code&gt; value complies with the syntax described in RFC2616, Section 14.1, as described below:<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    * &lt;p class='bcode'&gt;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    *    Accept         = "Accept" ":"<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    *                      #( media-range [ accept-params ] )<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    *<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    *    media-range    = ( "*\/*"<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    *                      | ( type "/" "*" )<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    *                      | ( type "/" subtype )<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    *                      ) *( ";" parameter )<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    *    accept-params  = ";" "q" "=" qvalue *( accept-extension )<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    *    accept-extension = ";" token [ "=" ( token | quoted-string ) ]<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    * &lt;/p&gt;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    * &lt;p&gt;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    * The general idea behind having the serializer resolution be a two-step process is so that<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    *    the matched media type can be passed in to the {@link WriterSerializer#doSerialize(SerializerSession, Object)} method.<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    * For example...<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    * &lt;p class='bcode'&gt;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    *    String acceptHeaderValue = request.getHeader(&lt;js&gt;"Accept"&lt;/js&gt;);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    *    String matchingMediaType = group.findMatch(acceptHeaderValue);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    *    if (matchingMediaType == &lt;jk&gt;null&lt;/jk&gt;)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    *       &lt;jk&gt;throw new&lt;/jk&gt; RestException(&lt;jsf&gt;SC_NOT_ACCEPTABLE&lt;/jsf&gt;);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    *    WriterSerializer s = (WriterSerializer)group.getSerializer(matchingMediaType);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    *    s.serialize(getPojo(), response.getWriter(), response.getProperties(), matchingMediaType);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    * &lt;/p&gt;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    *<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    * @param acceptHeader The HTTP &lt;l&gt;Accept&lt;/l&gt; header string.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    * @return The serializer and media type that matched the accept header, or &lt;jk&gt;null&lt;/jk&gt; if no match was made.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   public SerializerMatch getSerializerMatch(String acceptHeader) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      SerializerMatch sm = cache.get(acceptHeader);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      if (sm != null)<a name="line.134"></a>
+<span class="sourceLineNo">135</span>         return sm;<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>      Accept a = Accept.forString(acceptHeader);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      int match = a.findMatch(mediaTypes);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      if (match &gt;= 0) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>         sm = new SerializerMatch(mediaTypes[match], mediaTypeSerializers[match]);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>         cache.putIfAbsent(acceptHeader, sm);<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>      return cache.get(acceptHeader);<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>    * Same as {@link #getSerializerMatch(String)} but matches using a {@link MediaType} instance.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    *<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    * @param mediaType The HTTP media type.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    * @return The serializer and media type that matched the media type, or &lt;jk&gt;null&lt;/jk&gt; if no match was made.<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    */<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   public SerializerMatch getSerializerMatch(MediaType mediaType) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      return getSerializerMatch(mediaType.toString());<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>   /**<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    * Same as {@link #getSerializerMatch(String)} but returns just the matched serializer.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    *<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    * @param acceptHeader The HTTP &lt;l&gt;Accept&lt;/l&gt; header string.<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    * @return The serializer that matched the accept header, or &lt;jk&gt;null&lt;/jk&gt; if no match was made.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    */<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   public Serializer getSerializer(String acceptHeader) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      SerializerMatch sm = getSerializerMatch(acceptHeader);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      return sm == null ? null : sm.getSerializer();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>   /**<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    * Same as {@link #getSerializerMatch(MediaType)} but returns just the matched serializer.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    *<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    * @param mediaType The HTTP media type.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    * @return The serializer that matched the accept header, or &lt;jk&gt;null&lt;/jk&gt; if no match was made.<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    */<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   public Serializer getSerializer(MediaType mediaType) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      if (mediaType == null)<a name="line.175"></a>
+<span class="sourceLineNo">176</span>         return null;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      return getSerializer(mediaType.toString());<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>   /**<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    * Returns the media types that all serializers in this group can handle.<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    * &lt;p&gt;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    * Entries are ordered in the same order as the serializers in the group.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    *<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    * @return An unmodifiable list of media types.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    */<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   public List&lt;MediaType&gt; getSupportedMediaTypes() {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      return mediaTypesList;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>   /**<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    * Returns a copy of the property store that was used to create the serializers in this group.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    * This method returns a new factory each time so is somewhat expensive.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    *<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    * @return A new copy of the property store passed in to the constructor.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    */<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   public PropertyStore createPropertyStore() {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return PropertyStore.create(propertyStore);<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>    * Returns a copy of the serializers in this group.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    *<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    * @return An unmodifiable list of serializers in this group.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    */<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   public List&lt;Serializer&gt; getSerializers() {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return serializers;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   }<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>   /**<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    * Returns a bean context with the same properties as this group.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    *<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    * @return The bean context.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   public BeanContext getBeanContext() {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      return beanContext;<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>
 
 
 


[14/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/package-frame.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/package-frame.html b/content/site/apidocs/org/apache/juneau/rest/widget/package-frame.html
index 886493e..2bb6e38 100644
--- a/content/site/apidocs/org/apache/juneau/rest/widget/package-frame.html
+++ b/content/site/apidocs/org/apache/juneau/rest/widget/package-frame.html
@@ -17,6 +17,7 @@
 <li><a href="ContentTypeLinksRowWidget.html" title="class in org.apache.juneau.rest.widget" target="classFrame">ContentTypeLinksRowWidget</a></li>
 <li><a href="PoweredByApacheWidget.html" title="class in org.apache.juneau.rest.widget" target="classFrame">PoweredByApacheWidget</a></li>
 <li><a href="PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget" target="classFrame">PoweredByJuneauWidget</a></li>
+<li><a href="QueryWidget.html" title="class in org.apache.juneau.rest.widget" target="classFrame">QueryWidget</a></li>
 <li><a href="Widget.html" title="class in org.apache.juneau.rest.widget" target="classFrame">Widget</a></li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/package-summary.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/package-summary.html b/content/site/apidocs/org/apache/juneau/rest/widget/package-summary.html
index 558b6b6..4782d06 100644
--- a/content/site/apidocs/org/apache/juneau/rest/widget/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/rest/widget/package-summary.html
@@ -106,6 +106,12 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget">QueryWidget</a></td>
+<td class="colLast">
+<div class="block">Adds a <code>QUERY</code> link to the page that allows you to perform search/view/sort/paging on the page data.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a></td>
 <td class="colLast">
 <div class="block">Defines an interface for defining resolvers for <js>"$W{...}"</js> string variables.</div>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/rest/widget/package-tree.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/rest/widget/package-tree.html b/content/site/apidocs/org/apache/juneau/rest/widget/package-tree.html
index 2b9e8a3..5a2bb37 100644
--- a/content/site/apidocs/org/apache/juneau/rest/widget/package-tree.html
+++ b/content/site/apidocs/org/apache/juneau/rest/widget/package-tree.html
@@ -86,6 +86,7 @@
 <li type="circle">org.apache.juneau.rest.widget.<a href="../../../../../org/apache/juneau/rest/widget/ContentTypeLinksRowWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">ContentTypeLinksRowWidget</span></a></li>
 <li type="circle">org.apache.juneau.rest.widget.<a href="../../../../../org/apache/juneau/rest/widget/PoweredByApacheWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">PoweredByApacheWidget</span></a></li>
 <li type="circle">org.apache.juneau.rest.widget.<a href="../../../../../org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">PoweredByJuneauWidget</span></a></li>
+<li type="circle">org.apache.juneau.rest.widget.<a href="../../../../../org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">QueryWidget</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/serializer/SerializerGroup.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/serializer/SerializerGroup.html b/content/site/apidocs/org/apache/juneau/serializer/SerializerGroup.html
index ddcc095..d1628ea 100644
--- a/content/site/apidocs/org/apache/juneau/serializer/SerializerGroup.html
+++ b/content/site/apidocs/org/apache/juneau/serializer/SerializerGroup.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":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";
@@ -193,36 +193,42 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </td>
 </tr>
 <tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau">BeanContext</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getBeanContext--">getBeanContext</a></span>()</code>
+<div class="block">Returns a bean context with the same properties as this group.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSerializer-org.apache.juneau.http.MediaType-">getSerializer</a></span>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&nbsp;mediaType)</code>
 <div class="block">Same as <a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSerializerMatch-org.apache.juneau.http.MediaType-"><code>getSerializerMatch(MediaType)</code></a> but returns just the matched serializer.</div>
 </td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSerializer-java.lang.String-">getSerializer</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;acceptHeader)</code>
 <div class="block">Same as <a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSerializerMatch-java.lang.String-"><code>getSerializerMatch(String)</code></a> but returns just the matched serializer.</div>
 </td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/serializer/SerializerMatch.html" title="class in org.apache.juneau.serializer">SerializerMatch</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSerializerMatch-org.apache.juneau.http.MediaType-">getSerializerMatch</a></span>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&nbsp;mediaType)</code>
 <div class="block">Same as <a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSerializerMatch-java.lang.String-"><code>getSerializerMatch(String)</code></a> but matches using a <a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http"><code>MediaType</code></a> instance.</div>
 </td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/juneau/serializer/SerializerMatch.html" title="class in org.apache.juneau.serializer">SerializerMatch</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSerializerMatch-java.lang.String-">getSerializerMatch</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;acceptHeader)</code>
 <div class="block">Searches the group for a serializer that can handle the specified <code>Accept</code> value.</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSerializers--">getSerializers</a></span>()</code>
 <div class="block">Returns a copy of the serializers in this group.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSupportedMediaTypes--">getSupportedMediaTypes</a></span>()</code>
 <div class="block">Returns the media types that all serializers in this group can handle.</div>
@@ -256,7 +262,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SerializerGroup</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.81">SerializerGroup</a>(<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;propertyStore,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.82">SerializerGroup</a>(<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;propertyStore,
                        <a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a>[]&nbsp;serializers)</pre>
 <div class="block">Constructor.</div>
 <dl>
@@ -283,7 +289,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSerializerMatch</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/serializer/SerializerMatch.html" title="class in org.apache.juneau.serializer">SerializerMatch</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.130">getSerializerMatch</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;acceptHeader)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/serializer/SerializerMatch.html" title="class in org.apache.juneau.serializer">SerializerMatch</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.132">getSerializerMatch</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;acceptHeader)</pre>
 <div class="block">Searches the group for a serializer that can handle the specified <code>Accept</code> value.
  <p>
  The <code>accept</code> value complies with the syntax described in RFC2616, Section 14.1, as described below:
@@ -324,7 +330,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSerializerMatch</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/serializer/SerializerMatch.html" title="class in org.apache.juneau.serializer">SerializerMatch</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.151">getSerializerMatch</a>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&nbsp;mediaType)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/serializer/SerializerMatch.html" title="class in org.apache.juneau.serializer">SerializerMatch</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.153">getSerializerMatch</a>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&nbsp;mediaType)</pre>
 <div class="block">Same as <a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSerializerMatch-java.lang.String-"><code>getSerializerMatch(String)</code></a> but matches using a <a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http"><code>MediaType</code></a> instance.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -340,7 +346,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSerializer</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.161">getSerializer</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;acceptHeader)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.163">getSerializer</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;acceptHeader)</pre>
 <div class="block">Same as <a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSerializerMatch-java.lang.String-"><code>getSerializerMatch(String)</code></a> but returns just the matched serializer.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -356,7 +362,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSerializer</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.172">getSerializer</a>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&nbsp;mediaType)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.174">getSerializer</a>(<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&nbsp;mediaType)</pre>
 <div class="block">Same as <a href="../../../../org/apache/juneau/serializer/SerializerGroup.html#getSerializerMatch-org.apache.juneau.http.MediaType-"><code>getSerializerMatch(MediaType)</code></a> but returns just the matched serializer.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -372,7 +378,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSupportedMediaTypes</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.185">getSupportedMediaTypes</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/juneau/http/MediaType.html" title="class in org.apache.juneau.http">MediaType</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.187">getSupportedMediaTypes</a>()</pre>
 <div class="block">Returns the media types that all serializers in this group can handle.
  <p>
  Entries are ordered in the same order as the serializers in the group.</div>
@@ -388,7 +394,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createPropertyStore</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.195">createPropertyStore</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/PropertyStore.html" title="class in org.apache.juneau">PropertyStore</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.197">createPropertyStore</a>()</pre>
 <div class="block">Returns a copy of the property store that was used to create the serializers in this group.
  This method returns a new factory each time so is somewhat expensive.</div>
 <dl>
@@ -400,10 +406,10 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <a name="getSerializers--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getSerializers</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.204">getSerializers</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer">Serializer</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.206">getSerializers</a>()</pre>
 <div class="block">Returns a copy of the serializers in this group.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -411,6 +417,20 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </dl>
 </li>
 </ul>
+<a name="getBeanContext--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getBeanContext</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau">BeanContext</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/serializer/SerializerGroup.html#line.215">getBeanContext</a>()</pre>
+<div class="block">Returns a bean context with the same properties as this group.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The bean context.</dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/utils/PojoQuery.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/utils/PojoQuery.html b/content/site/apidocs/org/apache/juneau/utils/PojoQuery.html
index 3a50e18..2e72f1b 100644
--- a/content/site/apidocs/org/apache/juneau/utils/PojoQuery.html
+++ b/content/site/apidocs/org/apache/juneau/utils/PojoQuery.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
+var methods = {"i0":10,"i1":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -108,9 +108,9 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public final class <a href="../../../../src-html/org/apache/juneau/utils/PojoQuery.html#line.199">PojoQuery</a>
+<pre>public final class <a href="../../../../src-html/org/apache/juneau/utils/PojoQuery.html#line.183">PojoQuery</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">Designed to provide query/view/sort/paging filtering on tabular in-memory POJO models.
+<div class="block">Designed to provide search/view/sort/paging filtering on tabular in-memory POJO models.
  <p>
  It can also perform just view filtering on beans/maps.
  <p>
@@ -125,47 +125,40 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
  Tabular POJO models can be thought of as tables of data.  For example, a list of the following beans...
  <p class='bcode'>
    <jk>public</jk> MyBean {
-      <jk>public int</jk> fi;
-      <jk>public</jk> String fs;
-      <jk>public</jk> Date fd;
+      <jk>public int</jk> myInt;
+      <jk>public</jk> String myString;
+      <jk>public</jk> Date myDate;
    }
  <p>
    ... can be thought of a table containing the following columns...
  <p>
    <table class='styled code'>
-      <tr><th>fi</th><th>fs</th><th>fd</th></tr>
+      <tr><th>myInt</th><th>myString</th><th>myDate</th></tr>
       <tr><td>123</td><td>'foobar'</td><td>yyyy/MM/dd HH:mm:ss</td></tr>
       <tr><td colspan=3>...</td></tr>
    </table>
  <p>
  From this table, you can perform the following functions:
    <ul class='spaced-list'>
-      <li>Query - Return only rows where a search pattern matches.
+      <li>Search - Return only rows where a search pattern matches.
       <li>View - Return only the specified subset of columns in the specified order.
       <li>Sort - Sort the table by one or more columns.
-      <li>Page - Only return a subset of rows.
+      <li>Position/limit - Only return a subset of rows.
    </ul>
 
- <h5 class='topic'>Query</h5>
+ <h5 class='topic'>Search</h5>
  <p>
- The query capabilites allow you to filter based on query patterns against
+ The search capabilities allow you to filter based on query patterns against
    strings, dates, and numbers.  Queries take the form of a Map with column names
    as keys, and search patterns as values.  <br>
- Search patterns can be either <code>Strings</code> or <code>Maps</code>.<br>
  Multiple search patterns are ANDed (i.e. all patterns must match for the row to be returned).
 
  <h5 class='section'>Example:</h5>
  <ul class='spaced-list'>
-   <li><tt>{fi:'123'}</tt> - Return only rows where the <tt>fi</tt> column is 123.
-   <li><tt>{fs:'foobar'}</tt> - Return only rows where the <tt>fs</tt> column is 'foobar'.
-   <li><tt>{fd:'2001'}</tt> - Return only rows where the <tt>fd</tt> column have dates in the year 2001.
-   <li><tt>{fs:'foobar'}</tt> - Return only rows where the <tt>fs</tt> column is 'foobar'.
-      and the <tt>fs</tt> column starts with <tt>"foo"</tt>.
+   <li><tt>{myInt:'123'}</tt> - Return only rows where the <tt>myInt</tt> column is 123.
+   <li><tt>{myString:'foobar'}</tt> - Return only rows where the <tt>myString</tt> column is 'foobar'.
+   <li><tt>{myDate:'2001'}</tt> - Return only rows where the <tt>myDate</tt> column have dates in the year 2001.
  </ul>
- <p>
- Search patterns can also be applied to lower level fields.  For example, the search term
-   <tt>{f1:{f2:{f3{'foobar'}}}</tt> means only return top level rows where the <tt>f1.getF2().getF3()</tt>
-   property is <tt>'foobar'</tt>.
 
  <h5 class='topic'>String Patterns</h5>
  <p>
@@ -250,37 +243,28 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 
  <h6 class='topic'>Example view parameters:</h6>
  <ul>
-   <li><tt>['f1']</tt> - Return only column 'f1'.
-   <li><tt>['f2','f1']</tt> - Return only columns 'f2' and 'f1'.
-   <li><tt>['f1',{f2:'f3'}]</tt> - Return only columns 'f1' and 'f2', but for 'f2' objects,
-      only show the 'f3' property.
+   <li><tt>column1</tt> - Return only column 'column1'.
+   <li><tt>column2, column1</tt> - Return only columns 'column2' and 'column1' in that order.
  </ul>
 
  <h5 class='topic'>Sort</h5>
  <p>
  The sort capability allows you to sort values by the specified rows.<br>
- The sort parameter is a list of either <tt>Strings</tt> or <tt>Maps</tt>.<br>
-   <tt>Strings</tt> represent column names to sort ascending.  If you want
-   to sort descending, you need to specify a <tt>Map</tt> of the form <tt>{colname:'d'}</tt>
+ The sort parameter is a list of strings with an optional <js>'+'</js> or <js>'-'</js> suffix representing
+   ascending and descending order accordingly.
 
  <h6 class='topic'>Example sort parameters:</h6>
  <ul>
-   <li><tt>['f1']</tt> - Sort rows by column 'f1' ascending.
-   <li><tt>[{f1:'a'}]</tt> - Sort rows by column 'f1' ascending.
-   <li><tt>[{f1:'d'}]</tt> - Sort rows by column 'f1' descending.
-   <li><tt>[{f1:'a'},{f2:'d'}]</tt> - Sort rows by column 'f1' ascending, then 'f2' descending.
+   <li><tt>column1</tt> - Sort rows by column 'column1' ascending.
+   <li><tt>column1+</tt> - Sort rows by column 'column1' ascending.
+   <li><tt>column1-</tt> - Sort rows by column 'column1' descending.
+   <li><tt>column1, column2-</tt> - Sort rows by column 'column1' ascending, then 'column2' descending.
  </ul>
 
  <h5 class='topic'>Paging</h5>
  <p>
- Use the <tt>pos</tt> and <tt>limit</tt> parameters to specify a subset of rows to
-   return.
-
- <h5 class='topic'>Other Notes</h5>
- <ul class='spaced-list'>
-   <li>Calling <tt>filterMap()</tt> or <tt>filterCollection()</tt> always returns a new data
-      structure, so the methods can be called multiple times against the same input.
- </ul></div>
+ Use the <tt>position</tt> and <tt>limit</tt> parameters to specify a subset of rows to
+   return.</div>
 </li>
 </ul>
 </div>
@@ -321,29 +305,11 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr id="i0" class="altColor">
 <td class="colFirst"><code><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></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/PojoQuery.html#filterCollection-java.util.Map-java.util.List-java.util.List-int-int-boolean-">filterCollection</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;query,
-                <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>&nbsp;view,
-                <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>&nbsp;sort,
-                int&nbsp;pos,
-                int&nbsp;limit,
-                boolean&nbsp;ignoreCase)</code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/PojoQuery.html#filter-org.apache.juneau.utils.SearchArgs-">filter</a></span>(<a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a>&nbsp;args)</code>
 <div class="block">Filters the input object as a collection of maps.</div>
 </td>
 </tr>
 <tr id="i1" class="rowColor">
-<td class="colFirst"><code><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></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/PojoQuery.html#filterMap-java.util.List-">filterMap</a></span>(<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>&nbsp;view)</code>
-<div class="block">Filters the input object as a map.</div>
-</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>protected org.apache.juneau.utils.PojoQuery.CalendarP</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/PojoQuery.html#parseDate-java.lang.String-java.text.ParsePosition-">parseDate</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;seg,
-         <a href="http://docs.oracle.com/javase/7/docs/api/java/text/ParsePosition.html?is-external=true" title="class or interface in java.text">ParsePosition</a>&nbsp;pp)</code>
-<div class="block">Parses a timestamp string off the beginning of the string segment 'seg'.</div>
-</td>
-</tr>
-<tr id="i3" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/PojoQuery.html#setValidTimestampFormats-java.lang.String...-">setValidTimestampFormats</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;s)</code>
 <div class="block">Use this method to override the allowed search patterns when used in locales where time formats are
@@ -378,7 +344,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PojoQuery</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/PojoQuery.html#line.211">PojoQuery</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;input,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/PojoQuery.html#line.195">PojoQuery</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;input,
                  <a href="../../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;session)</pre>
 <div class="block">Constructor.</div>
 <dl>
@@ -396,55 +362,30 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="filterMap-java.util.List-">
+<a name="filter-org.apache.juneau.utils.SearchArgs-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filterMap</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/PojoQuery.html#line.223">filterMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;view)</pre>
-<div class="block">Filters the input object as a map.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>view</code> - The list and order of properties to return from the map.  Values must be of type <code>String</code> or <code>Map</code>.</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>The filtered map</dd>
-</dl>
-</li>
-</ul>
-<a name="filterCollection-java.util.Map-java.util.List-java.util.List-int-int-boolean-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>filterCollection</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/PojoQuery.html#line.248">filterCollection</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>&nbsp;query,
-                             <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>&nbsp;view,
-                             <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>&nbsp;sort,
-                             int&nbsp;pos,
-                             int&nbsp;limit,
-                             boolean&nbsp;ignoreCase)</pre>
+<h4>filter</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/PojoQuery.html#line.208">filter</a>(<a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a>&nbsp;args)</pre>
 <div class="block">Filters the input object as a collection of maps.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>query</code> - The query attributes.  Keys must be column names and values must be of type <code>String</code> or <code>Map</code>.</dd>
-<dd><code>view</code> - The view attributes.  Values must be of type <code>String</code> or <code>Map</code>.</dd>
-<dd><code>sort</code> - The sort attributes.  Values must be of type <code>String</code> or <code>Map</code>.</dd>
-<dd><code>pos</code> - The index into the list to start returning results from.  Default is <code>0</code>.</dd>
-<dd><code>limit</code> - The number of rows to return.  Default is all rows.</dd>
-<dd><code>ignoreCase</code> - If <jk>true</jk>, then querying is case insensitive.  Default is <jk>false</jk>.</dd>
+<dd><code>args</code> - The search arguments.</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>The filtered collection.</dd>
+<dd>The filtered collection.
+   <br>Returns the unaltered input if the input is not a collection or array of objects.</dd>
 </dl>
 </li>
 </ul>
 <a name="setValidTimestampFormats-java.lang.String...-">
 <!--   -->
 </a>
-<ul class="blockList">
+<ul class="blockListLast">
 <li class="blockList">
 <h4>setValidTimestampFormats</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/PojoQuery.html#line.716">setValidTimestampFormats</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;s)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/PojoQuery.html#line.609">setValidTimestampFormats</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;s)</pre>
 <div class="block">Use this method to override the allowed search patterns when used in locales where time formats are
  different.</div>
 <dl>
@@ -453,26 +394,6 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </dl>
 </li>
 </ul>
-<a name="parseDate-java.lang.String-java.text.ParsePosition-">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>parseDate</h4>
-<pre>protected&nbsp;org.apache.juneau.utils.PojoQuery.CalendarP&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/PojoQuery.html#line.915">parseDate</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;seg,
-                                                                <a href="http://docs.oracle.com/javase/7/docs/api/java/text/ParsePosition.html?is-external=true" title="class or interface in java.text">ParsePosition</a>&nbsp;pp)</pre>
-<div class="block">Parses a timestamp string off the beginning of the string segment 'seg'.
- Goes through each possible valid timestamp format until it finds a match.
- The position where the parsing left off is stored in pp.</div>
-<dl>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>seg</code> - The string segment being parsed.</dd>
-<dd><code>pp</code> - Where parsing last left off.</dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>An object represening a timestamp.</dd>
-</dl>
-</li>
-</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/utils/ProcBuilder.Matcher.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/utils/ProcBuilder.Matcher.html b/content/site/apidocs/org/apache/juneau/utils/ProcBuilder.Matcher.html
index 8195e22..682105b 100644
--- a/content/site/apidocs/org/apache/juneau/utils/ProcBuilder.Matcher.html
+++ b/content/site/apidocs/org/apache/juneau/utils/ProcBuilder.Matcher.html
@@ -43,7 +43,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/juneau/utils/ProcBuilder.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/juneau/utils/StringMessage.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/juneau/utils/ProcBuilder.Matcher.html" target="_top">Frames</a></li>
@@ -196,7 +196,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/juneau/utils/ProcBuilder.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/juneau/utils/StringMessage.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/juneau/utils/ProcBuilder.Matcher.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/utils/SearchArgs.Builder.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/utils/SearchArgs.Builder.html b/content/site/apidocs/org/apache/juneau/utils/SearchArgs.Builder.html
new file mode 100644
index 0000000..3b8d77c
--- /dev/null
+++ b/content/site/apidocs/org/apache/juneau/utils/SearchArgs.Builder.html
@@ -0,0 +1,537 @@
+<!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>SearchArgs.Builder (Apache Juneau (incubating) 6.2.1-incubating-SNAPSHOT)</title>
+<link rel="stylesheet" type="text/css" href="../../../../javadoc.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SearchArgs.Builder (Apache Juneau (incubating) 6.2.1-incubating-SNAPSHOT)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/utils/StringMessage.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/juneau/utils/SearchArgs.Builder.html" target="_top">Frames</a></li>
+<li><a href="SearchArgs.Builder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.juneau.utils</div>
+<h2 title="Class SearchArgs.Builder" class="title">Class SearchArgs.Builder</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.juneau.utils.SearchArgs.Builder</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static class <a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.html#line.45">SearchArgs.Builder</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">Builder for <a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> class.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html#Builder--">Builder</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html#build--">build</a></span>()</code>
+<div class="block">Construct the <a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> object.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html#ignoreCase-boolean-">ignoreCase</a></span>(boolean&nbsp;value)</code>
+<div class="block">Specifies whether case-insensitive search should be used.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html#limit-int-">limit</a></span>(int&nbsp;limit)</code>
+<div class="block">Specifies the number of rows to return.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html#position-int-">position</a></span>(int&nbsp;position)</code>
+<div class="block">Specifies the starting line number.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html#search-java.lang.String-">search</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;searchTerms)</code>
+<div class="block">Adds search terms to this builder.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html#search-java.lang.String-java.lang.String-">search</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;column,
+      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;searchTerm)</code>
+<div class="block">Adds a search term to this builder.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html#sort-java.util.Collection-">sort</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>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;sortArgs)</code>
+<div class="block">Specifies the sort arguments.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html#sort-java.lang.String-">sort</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;sortArgs)</code>
+<div class="block">Specifies the sort arguments.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html#view-java.util.Collection-">view</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>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;columns)</code>
+<div class="block">Specifies the list of columns to view.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html#view-java.lang.String-">view</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;columns)</code>
+<div class="block">Specifies the list of columns to view.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="Builder--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>Builder</h4>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.Builder.html#line.45">Builder</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="search-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>search</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.Builder.html#line.70">search</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;searchTerms)</pre>
+<div class="block">Adds search terms to this builder.
+ <p>
+ The search terms are a comma-delimited list of key/value pairs of column-names and search tokens.
+ <p>
+ For example:
+ <p class='bcode'>
+   builder.search(<js>"column1=foo*, column2=bar baz"</js>);
+ </p>
+ <p>
+ It's up to implementers to decide the syntax and meaning of the search terms.
+ <p>
+ Whitespace is trimmed from column names and search tokens.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>searchTerms</code> - The search terms string.
+   Can be <jk>null</jk>.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="search-java.lang.String-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>search</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.Builder.html#line.92">search</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;column,
+                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;searchTerm)</pre>
+<div class="block">Adds a search term to this builder.
+ <p>
+ It's up to implementers to decide the syntax and meaning of the search term.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>column</code> - The column being searched.</dd>
+<dd><code>searchTerm</code> - The search term.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="view-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>view</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.Builder.html#line.115">view</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;columns)</pre>
+<div class="block">Specifies the list of columns to view.
+ <p>
+ The columns argument is a simple comma-delimited list of column names.
+ <p>
+ For example:
+ <p class='bcode'>
+   builder.view(<js>"column1, column2"</js>);
+ </p>
+ <p>
+ Whitespace is trimmed from column names.
+ <p>
+ Empty view columns imply view all columns.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>columns</code> - The columns being viewed.
+   Can be <jk>null</jk>.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="view-java.util.Collection-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>view</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.Builder.html#line.129">view</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;columns)</pre>
+<div class="block">Specifies the list of columns to view.
+ <p>
+ Empty view columns imply view all columns.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>columns</code> - The columns being viewed.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="sort-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sort</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.Builder.html#line.155">sort</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;sortArgs)</pre>
+<div class="block">Specifies the sort arguments.
+ <p>
+ The sort argument is a simple comma-delimited list of column names.
+ <br>Column names can be suffixed with <js>'+'</js> or <js>'-'</js> to indicate ascending or descending order.
+ <br>No suffix implies ascending order.
+ <p>
+ For example:
+ <p class='bcode'>
+   <jc>// Order by column1 ascending, then column2 descending.</jc>
+   builder.sort(<js>"column1, column2-"</js>);
+ </p>
+ <p>
+ Note that the order of the order arguments is important.
+ <p>
+ Whitespace is trimmed from column names.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sortArgs</code> - The columns to sort by.
+   Can be <jk>null</jk>.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="sort-java.util.Collection-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sort</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.Builder.html#line.173">sort</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;sortArgs)</pre>
+<div class="block">Specifies the sort arguments.
+ <p>
+ <br>Column names can be suffixed with <js>'+'</js> or <js>'-'</js> to indicate ascending or descending order.
+ <br>No suffix implies ascending order.
+ <p>
+ Note that the order of the sort is important.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>sortArgs</code> - The columns to sort by.
+   Can be <jk>null</jk>.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="position-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>position</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.Builder.html#line.191">position</a>(int&nbsp;position)</pre>
+<div class="block">Specifies the starting line number.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>position</code> - The zero-indexed position.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="limit-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>limit</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.Builder.html#line.203">limit</a>(int&nbsp;limit)</pre>
+<div class="block">Specifies the number of rows to return.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>limit</code> - The number of rows to return.
+   If <code>&lt;=0</code>, all rows should be returned.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="ignoreCase-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ignoreCase</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.Builder.html#line.216">ignoreCase</a>(boolean&nbsp;value)</pre>
+<div class="block">Specifies whether case-insensitive search should be used.
+ <p>
+ The default is <jk>false</jk>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>value</code> - The ignore-case flag value.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>This object (for method chaining).</dd>
+</dl>
+</li>
+</ul>
+<a name="build--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>build</h4>
+<pre>public&nbsp;<a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.Builder.html#line.228">build</a>()</pre>
+<div class="block">Construct the <a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> object.
+ <p>
+ This method can be called multiple times to construct new objects.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>A new <a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> object initialized with values in this builder.</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/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/utils/StringMessage.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/juneau/utils/SearchArgs.Builder.html" target="_top">Frames</a></li>
+<li><a href="SearchArgs.Builder.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2017 <a href="http://www.apache.org/">Apache</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/utils/SearchArgs.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/utils/SearchArgs.html b/content/site/apidocs/org/apache/juneau/utils/SearchArgs.html
new file mode 100644
index 0000000..9a6cc3e
--- /dev/null
+++ b/content/site/apidocs/org/apache/juneau/utils/SearchArgs.html
@@ -0,0 +1,380 @@
+<!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>SearchArgs (Apache Juneau (incubating) 6.2.1-incubating-SNAPSHOT)</title>
+<link rel="stylesheet" type="text/css" href="../../../../javadoc.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="SearchArgs (Apache Juneau (incubating) 6.2.1-incubating-SNAPSHOT)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../org/apache/juneau/utils/ProcBuilder.Matcher.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/juneau/utils/SearchArgs.html" target="_top">Frames</a></li>
+<li><a href="SearchArgs.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.juneau.utils</div>
+<h2 title="Class SearchArgs" class="title">Class SearchArgs</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.juneau.utils.SearchArgs</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.html#line.25">SearchArgs</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">Encapsulates arguments for basic search/view/sort/position/limit functionality.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></span></code>
+<div class="block">Builder for <a href="../../../../org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> class.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.html#getLimit--">getLimit</a></span>()</code>
+<div class="block">The number of rows to return.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.html#getPosition--">getPosition</a></span>()</code>
+<div class="block">The first-row position.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.html#getSearch--">getSearch</a></span>()</code>
+<div class="block">The query search terms.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.html#getSort--">getSort</a></span>()</code>
+<div class="block">The sort columns.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.html#getView--">getView</a></span>()</code>
+<div class="block">The view columns.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/utils/SearchArgs.html#isIgnoreCase--">isIgnoreCase</a></span>()</code>
+<div class="block">The ignore-case flag.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getSearch--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSearch</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.html#line.242">getSearch</a>()</pre>
+<div class="block">The query search terms.
+ <p>
+ The search terms are key/value pairs consisting of column-names and search tokens.
+ <p>
+ It's up to implementers to decide the syntax and meaning of the search term.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>An unmodifiable map of query search terms.</dd>
+</dl>
+</li>
+</ul>
+<a name="getView--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getView</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.html#line.254">getView</a>()</pre>
+<div class="block">The view columns.
+ <p>
+ The view columns are the list of columns that should be displayed.
+ An empty list implies all columns should be displayed.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>An unmodifiable list of columns to view.</dd>
+</dl>
+</li>
+</ul>
+<a name="getSort--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSort</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.html#line.266">getSort</a>()</pre>
+<div class="block">The sort columns.
+ <p>
+ The sort columns are key/value pairs consisting of column-names and direction flags
+   (<jk>false</jk> = ascending, <jk>true</jk> = descending).</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>An unmodifiable ordered map of sort columns and directions.</dd>
+</dl>
+</li>
+</ul>
+<a name="getPosition--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getPosition</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.html#line.276">getPosition</a>()</pre>
+<div class="block">The first-row position.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The zero-indexed row number of the first row to display.
+   Default is <code>0</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getLimit--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getLimit</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.html#line.286">getLimit</a>()</pre>
+<div class="block">The number of rows to return.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The number of rows to return in the result.
+   Default is <code>0</code> which means return all rows.</dd>
+</dl>
+</li>
+</ul>
+<a name="isIgnoreCase--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>isIgnoreCase</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/utils/SearchArgs.html#line.298">isIgnoreCase</a>()</pre>
+<div class="block">The ignore-case flag.
+ <p>
+ Used in conjunction with <a href="../../../../org/apache/juneau/utils/SearchArgs.html#getSearch--"><code>getSearch()</code></a> to specify whether case-insensitive searches should be performed.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The number of rows to return in the result.
+   Default is <jk>false</jk>.</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/utils/ProcBuilder.Matcher.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/juneau/utils/SearchArgs.html" target="_top">Frames</a></li>
+<li><a href="SearchArgs.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2017 <a href="http://www.apache.org/">Apache</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/utils/StringMessage.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/utils/StringMessage.html b/content/site/apidocs/org/apache/juneau/utils/StringMessage.html
index 96ae9a7..1668605 100644
--- a/content/site/apidocs/org/apache/juneau/utils/StringMessage.html
+++ b/content/site/apidocs/org/apache/juneau/utils/StringMessage.html
@@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/utils/ProcBuilder.Matcher.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/juneau/utils/StringObject.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -358,7 +358,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/CharSeque
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/juneau/utils/ProcBuilder.Matcher.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/juneau/utils/StringObject.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">



[17/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/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 ddd2344..b4843f8 100644
--- a/content/site/apidocs/org/apache/juneau/internal/StringUtils.html
+++ b/content/site/apidocs/org/apache/juneau/internal/StringUtils.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,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":9,"i48":9,"i49":9,"i50":9,"i51":9,"i52":9,"i53":9,"i54":9,"i55":9,"i56":9,"i57":9,"i58":9,"i59":9,"i60":9,"i61":9,"i62":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,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":9,"i48":9,"i49":9,"i50":9,"i51":9,"i52":9,"i53":9,"i54":9,"i55":9,"i56":9,"i57":9,"i58":9,"i59":9,"i60":9,"i61":9,"i62":9,"i63":9,"i64":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -192,48 +192,55 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr id="i7" class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#endsWith-java.lang.String-char...-">endsWith</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
+        char...&nbsp;c)</code>
+<div class="block">Same as <a href="../../../../org/apache/juneau/internal/StringUtils.html#endsWith-java.lang.String-char-"><code>endsWith(String, char)</code></a> except check for multiple characters.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#endsWith-java.lang.String-char-">endsWith</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
         char&nbsp;c)</code>
 <div class="block">An efficient method for checking if a string ends with a character.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" 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/StringUtils.html#firstNonEmpty-java.lang.String...-">firstNonEmpty</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;s)</code>
 <div class="block">Returns the first non-null, non-empty string in the list.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>static char</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#firstNonWhitespaceChar-java.lang.String-">firstNonWhitespaceChar</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Returns the first non-whitespace character in the string.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#fromHex-java.lang.String-">fromHex</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hex)</code>
 <div class="block">Converts a hexadecimal character string to a byte array.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" 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/StringUtils.html#fromHexToUTF8-java.lang.String-">fromHexToUTF8</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;hex)</code>
 <div class="block">Converts a hexadecimal byte stream (e.g.</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/StringUtils.html#generateUUID-int-">generateUUID</a></span>(int&nbsp;numchars)</code>
 <div class="block">Generated a random UUID with the specified number of characters.</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/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/StringUtils.html#getAuthorityUri-java.lang.String-">getAuthorityUri</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Given an absolute URI, returns just the authority portion (e.g.</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/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/StringUtils.html#getField-int-java.lang.String-char-">getField</a></span>(int&nbsp;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>&nbsp;s,
@@ -241,7 +248,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="block">Returns the specified field in a delimited string without splitting the string.</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/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/StringUtils.html#getField-int-java.lang.String-char-java.lang.String-">getField</a></span>(int&nbsp;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>&nbsp;s,
@@ -250,89 +257,96 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="block">Same as <a href="../../../../org/apache/juneau/internal/StringUtils.html#getField-int-java.lang.String-char-"><code>getField(int, String, char)</code></a> except allows you to specify the default value.</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/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/StringUtils.html#getStackTrace-java.lang.Throwable-">getStackTrace</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</code>
 <div class="block">Convenience method for getting a stack trace as a string.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#indexOf-java.lang.String-char...-">indexOf</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
+       char...&nbsp;c)</code>
+<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 mulitiple characters.</div>
+</td>
+</tr>
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#isAbsoluteUri-java.lang.String-">isAbsoluteUri</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Efficiently determines whether a URL is of the pattern "xxx://xxx"</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#isDecimal-java.lang.String-">isDecimal</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Returns <jk>true</jk> if the specified string is numeric.</div>
 </td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#isEmpty-java.lang.Object-">isEmpty</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;s)</code>
 <div class="block">Returns <jk>true</jk> if specified string is <jk>null</jk> or it's <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> method returns an empty string.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#isEmpty-java.lang.String-">isEmpty</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Returns <jk>true</jk> if specified string is <jk>null</jk> or empty.</div>
 </td>
 </tr>
-<tr id="i21" class="rowColor">
+<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/StringUtils.html#isEquals-java.lang.String-java.lang.String-">isEquals</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s1,
         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s2)</code>
 <div class="block">Tests two strings for equality, but gracefully handles nulls.</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<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/StringUtils.html#isFirstNumberChar-char-">isFirstNumberChar</a></span>(char&nbsp;c)</code>
 <div class="block">Returns <jk>true</jk> if the specified character is a valid first character for a number.</div>
 </td>
 </tr>
-<tr id="i23" class="rowColor">
+<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/StringUtils.html#isFloat-java.lang.String-">isFloat</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Returns <jk>true</jk> if the specified string is a floating point number.</div>
 </td>
 </tr>
-<tr id="i24" class="altColor">
+<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/StringUtils.html#isNumeric-java.lang.String-">isNumeric</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Returns <jk>true</jk> if this string can be parsed by <a href="../../../../org/apache/juneau/internal/StringUtils.html#parseNumber-java.lang.String-java.lang.Class-"><code>parseNumber(String, Class)</code></a>.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<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/StringUtils.html#isOneOf-java.lang.String-java.lang.String...-">isOneOf</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;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>...&nbsp;values)</code>
 <div class="block">Returns <jk>true</jk> if the specified string is one of the specified values.</div>
 </td>
 </tr>
-<tr id="i26" class="altColor">
+<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/StringUtils.html#isUri-java.lang.String-">isUri</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Efficiently determines whether a URL is of the pattern "xxx:/xxx".</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i29" 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/StringUtils.html#join-java.util.Collection-char-">join</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>&lt;?&gt;&nbsp;tokens,
     char&nbsp;d)</code>
 <div class="block">Join the specified tokens into a delimited string.</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i30" 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/StringUtils.html#join-java.util.Collection-java.lang.String-">join</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>&lt;?&gt;&nbsp;tokens,
     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;d)</code>
 <div class="block">Join the specified tokens into a delimited string.</div>
 </td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#join-java.util.Collection-java.lang.String-java.lang.StringBuilder-">join</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>&lt;?&gt;&nbsp;tokens,
     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;d,
@@ -340,28 +354,28 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="block">Joins the specified tokens into a delimited string and writes the output to the specified string builder.</div>
 </td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i32" 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/StringUtils.html#join-int:A-char-">join</a></span>(int[]&nbsp;tokens,
     char&nbsp;d)</code>
 <div class="block">Join the specified tokens into a delimited string.</div>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i33" 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/StringUtils.html#join-int:A-java.lang.String-">join</a></span>(int[]&nbsp;tokens,
     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;d)</code>
 <div class="block">Join the specified tokens into a delimited string.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i34" 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/StringUtils.html#join-java.lang.Object:A-char-">join</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;tokens,
     char&nbsp;d)</code>
 <div class="block">Joins the specified tokens into a delimited string.</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#join-java.lang.Object:A-char-java.lang.StringBuilder-">join</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;tokens,
     char&nbsp;d,
@@ -369,73 +383,73 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="block">Join the specified tokens into a delimited string and writes the output to the specified string builder.</div>
 </td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i36" 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/StringUtils.html#join-java.lang.Object:A-java.lang.String-">join</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;tokens,
     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;separator)</code>
 <div class="block">Join the specified tokens into a delimited string.</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i37" 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/StringUtils.html#nullIfEmpty-java.lang.String-">nullIfEmpty</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Returns <jk>null</jk> if the specified string is <jk>null</jk> or empty.</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>static <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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#parseISO8601Date-java.lang.String-">parseISO8601Date</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;date)</code>
 <div class="block">Parses an ISO8601 string into a date.</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Number.html?is-external=true" title="class or interface in java.lang">Number</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#parseNumber-org.apache.juneau.parser.ParserReader-java.lang.Class-">parseNumber</a></span>(<a href="../../../../org/apache/juneau/parser/ParserReader.html" title="class in org.apache.juneau.parser">ParserReader</a>&nbsp;r,
            <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Number.html?is-external=true" title="class or interface in java.lang">Number</a>&gt;&nbsp;type)</code>
 <div class="block">Parses a number from the specified reader stream.</div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Number.html?is-external=true" title="class or interface in java.lang">Number</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#parseNumber-java.lang.String-java.lang.Class-">parseNumber</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
            <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Number.html?is-external=true" title="class or interface in java.lang">Number</a>&gt;&nbsp;type)</code>
 <div class="block">Parses a number from the specified string.</div>
 </td>
 </tr>
-<tr id="i39" class="rowColor">
+<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/StringUtils.html#parseNumberString-org.apache.juneau.parser.ParserReader-">parseNumberString</a></span>(<a href="../../../../org/apache/juneau/parser/ParserReader.html" title="class in org.apache.juneau.parser">ParserReader</a>&nbsp;r)</code>
 <div class="block">Reads a numeric string from the specified reader.</div>
 </td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#pathStartsWith-java.lang.String-java.lang.String-">pathStartsWith</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
               <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pathPrefix)</code>
 <div class="block">Returns <jk>true</jk> if the specified path string is prefixed with the specified prefix.</div>
 </td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#pathStartsWith-java.lang.String-java.lang.String:A-">pathStartsWith</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
               <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;pathPrefixes)</code>
 <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>
 </td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i44" 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/StringUtils.html#repeat-int-java.lang.String-">repeat</a></span>(int&nbsp;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>&nbsp;pattern)</code>
 <div class="block">Creates a repeated pattern.</div>
 </td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i45" 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/StringUtils.html#replaceUnicodeSequences-java.lang.String-">replaceUnicodeSequences</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Replaces <js>"\\uXXXX"</js> character sequences with their unicode characters.</div>
 </td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i46" 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/StringUtils.html#replaceVars-java.lang.String-java.util.Map-">replaceVars</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
            <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;m)</code>
@@ -443,21 +457,21 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
    in the specified map.</div>
 </td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i47" 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/StringUtils.html#split-java.lang.String:A-char-">split</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;s,
      char&nbsp;c)</code>
 <div class="block">Same as <a href="../../../../org/apache/juneau/internal/StringUtils.html#split-java.lang.String-char-"><code>split(String, char)</code></a> except splits all strings in the input and returns a single result.</div>
 </td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i48" 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/StringUtils.html#split-java.lang.String-char-">split</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
      char&nbsp;c)</code>
 <div class="block">Splits a character-delimited string into a string array.</div>
 </td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#splitMap-java.lang.String-char-char-boolean-">splitMap</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
         char&nbsp;delim,
@@ -466,81 +480,81 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="block">Splits a list of key-value pairs into an ordered map.</div>
 </td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#startsWith-java.lang.String-char-">startsWith</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
           char&nbsp;c)</code>
 <div class="block">An efficient method for checking if a string starts with a character.</div>
 </td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i51" 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/StringUtils.html#toHex-byte:A-">toHex</a></span>(byte[]&nbsp;bytes)</code>
 <div class="block">Converts a byte array into a simple hexadecimal character string.</div>
 </td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code>static char[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#toHex-int-">toHex</a></span>(int&nbsp;num)</code>
 <div class="block">Converts the specified number into a 4 hexadecimal characters.</div>
 </td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i53" 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/StringUtils.html#toString-java.lang.Object-">toString</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</code>
 <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>
 </td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code>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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#toURI-java.lang.Object-">toURI</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</code>
 <div class="block">Converts the specified object to a URI.</div>
 </td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i55" 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/StringUtils.html#trim-java.lang.String-">trim</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Same as <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true#trim--" title="class or interface in java.lang"><code>String.trim()</code></a> but prevents <code>NullPointerExceptions</code>.</div>
 </td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i56" 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/StringUtils.html#trimEnd-java.lang.String-">trimEnd</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Trims whitespace characters from the end of the specified string.</div>
 </td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i57" 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/StringUtils.html#trimSlashes-java.lang.String-">trimSlashes</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Trims <js>'/'</js> characters from both the start and end of the specified string.</div>
 </td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i58" 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/StringUtils.html#trimStart-java.lang.String-">trimStart</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Trims whitespace characters from the beginning of the specified string.</div>
 </td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i59" 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/StringUtils.html#trimTrailingSlashes-java.lang.String-">trimTrailingSlashes</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Trims <js>'/'</js> characters from the end of the specified string.</div>
 </td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code>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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/juneau/internal/StringUtils.html#trimTrailingSlashes-java.lang.StringBuffer-">trimTrailingSlashes</a></span>(<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>&nbsp;s)</code>
 <div class="block">Trims <js>'/'</js> characters from the end of the specified string.</div>
 </td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i61" 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/StringUtils.html#unEscapeChars-java.lang.String-char:A-">unEscapeChars</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
              char[]&nbsp;toEscape)</code>
 <div class="block">Removes escape characters (\) from the specified characters.</div>
 </td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i62" 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/StringUtils.html#unEscapeChars-java.lang.String-char:A-char-">unEscapeChars</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
              char[]&nbsp;toEscape,
@@ -548,13 +562,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="block">Removes escape characters (specified by escapeChar) from the specified characters.</div>
 </td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i63" 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/StringUtils.html#urlDecode-java.lang.String-">urlDecode</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Decodes a <code>application/x-www-form-urlencoded</code> string using <code>UTF-8</code> encoding scheme.</div>
 </td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i64" 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/StringUtils.html#urlEncode-java.lang.String-">urlEncode</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Encodes a <code>application/x-www-form-urlencoded</code> string using <code>UTF-8</code> encoding scheme.</div>
@@ -1143,13 +1157,31 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </dl>
 </li>
 </ul>
+<a name="endsWith-java.lang.String-char...-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>endsWith</h4>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.751">endsWith</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
+                               char...&nbsp;c)</pre>
+<div class="block">Same as <a href="../../../../org/apache/juneau/internal/StringUtils.html#endsWith-java.lang.String-char-"><code>endsWith(String, char)</code></a> except check for multiple characters.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The string to check.  Can be <jk>null</jk>.</dd>
+<dd><code>c</code> - The characters to check for.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd><jk>true</jk> if the specified string is not <jk>null</jk> and ends with the specified character.</dd>
+</dl>
+</li>
+</ul>
 <a name="toHex-int-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>toHex</h4>
-<pre>public static final&nbsp;char[]&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.750">toHex</a>(int&nbsp;num)</pre>
+<pre>public static final&nbsp;char[]&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.770">toHex</a>(int&nbsp;num)</pre>
 <div class="block">Converts the specified number into a 4 hexadecimal characters.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1165,7 +1197,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isEquals</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.770">isEquals</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s1,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.790">isEquals</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s1,
                                <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s2)</pre>
 <div class="block">Tests two strings for equality, but gracefully handles nulls.</div>
 <dl>
@@ -1183,7 +1215,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>base64EncodeToString</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.784">base64EncodeToString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.804">base64EncodeToString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in)</pre>
 <div class="block">Shortcut for calling <code>base64Encode(in.getBytes(<js>"UTF-8"</js>))</code></div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1199,7 +1231,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>base64Encode</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.796">base64Encode</a>(byte[]&nbsp;in)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.816">base64Encode</a>(byte[]&nbsp;in)</pre>
 <div class="block">BASE64-encodes the specified byte array.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1215,7 +1247,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>base64DecodeToString</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.826">base64DecodeToString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.846">base64DecodeToString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in)</pre>
 <div class="block">Shortcut for calling <code>base64Decode(String)</code> and converting the
    result to a UTF-8 encoded string.</div>
 <dl>
@@ -1232,7 +1264,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>base64Decode</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.839">base64Decode</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.859">base64Decode</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in)</pre>
 <div class="block">BASE64-decodes the specified string.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1248,7 +1280,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>generateUUID</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.894">generateUUID</a>(int&nbsp;numchars)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.914">generateUUID</a>(int&nbsp;numchars)</pre>
 <div class="block">Generated a random UUID with the specified number of characters.
  Characters are composed of lower-case ASCII letters and numbers only.
  This method conforms to the restrictions for hostnames as specified in <a class="doclink" href="https://tools.ietf.org/html/rfc952">RFC 952</a>
@@ -1274,7 +1306,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>trim</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.912">trim</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.932">trim</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</pre>
 <div class="block">Same as <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true#trim--" title="class or interface in java.lang"><code>String.trim()</code></a> but prevents <code>NullPointerExceptions</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1290,7 +1322,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>parseISO8601Date</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.html?is-external=true" title="class or interface in java.util">Date</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.926">parseISO8601Date</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;date)
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Date.html?is-external=true" title="class or interface in java.util">Date</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.946">parseISO8601Date</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;date)
                              throws <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></pre>
 <div class="block">Parses an ISO8601 string into a date.</div>
 <dl>
@@ -1309,7 +1341,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>replaceVars</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.959">replaceVars</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.979">replaceVars</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;m)</pre>
 <div class="block">Simple utility for replacing variables of the form <js>"{key}"</js> with values
    in the specified map.
@@ -1334,7 +1366,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&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1028">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>&nbsp;path,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1048">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>&nbsp;path,
                                      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pathPrefix)</pre>
 <div class="block">Returns <jk>true</jk> if the specified path string is prefixed with the specified prefix.
 
@@ -1360,7 +1392,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&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1044">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>&nbsp;path,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1064">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>&nbsp;path,
                                      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;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.
  <p></div>
@@ -1379,7 +1411,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1057">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>&nbsp;s)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1077">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>&nbsp;s)</pre>
 <div class="block">Replaces <js>"\\uXXXX"</js> character sequences with their unicode characters.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1395,7 +1427,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1085">getField</a>(int&nbsp;fieldNum,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1105">getField</a>(int&nbsp;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>&nbsp;s,
                               char&nbsp;delim)</pre>
 <div class="block">Returns the specified field in a delimited string without splitting the string.
@@ -1421,7 +1453,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1098">getField</a>(int&nbsp;fieldNum,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1118">getField</a>(int&nbsp;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>&nbsp;s,
                               char&nbsp;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>&nbsp;def)</pre>
@@ -1443,7 +1475,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1123">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>&nbsp;o)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1143">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>&nbsp;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>
@@ -1459,7 +1491,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1133">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>&nbsp;hex)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1153">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>&nbsp;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>
@@ -1475,7 +1507,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1150">toHex</a>(byte[]&nbsp;bytes)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1170">toHex</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Converts a byte array into a simple hexadecimal character string.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1491,7 +1523,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&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1165">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>&nbsp;hex)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1185">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>&nbsp;hex)</pre>
 <div class="block">Converts a hexadecimal character string to a byte array.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1507,7 +1539,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1180">repeat</a>(int&nbsp;count,
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1200">repeat</a>(int&nbsp;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>&nbsp;pattern)</pre>
 <div class="block">Creates a repeated pattern.</div>
 <dl>
@@ -1525,7 +1557,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1193">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>&nbsp;s)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1213">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>&nbsp;s)</pre>
 <div class="block">Trims whitespace characters from the beginning of the specified string.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1541,7 +1573,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1206">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>&nbsp;s)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1226">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>&nbsp;s)</pre>
 <div class="block">Trims whitespace characters from the end of the specified string.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1557,7 +1589,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&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1222">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>&nbsp;s,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1242">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>&nbsp;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>...&nbsp;values)</pre>
 <div class="block">Returns <jk>true</jk> if the specified string is one of the specified values.</div>
 <dl>
@@ -1577,7 +1609,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1235">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>&nbsp;s)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1255">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>&nbsp;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>
@@ -1593,7 +1625,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1251">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>&nbsp;s)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1271">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>&nbsp;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>
@@ -1609,7 +1641,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&nbsp;<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>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1265">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>&nbsp;s)</pre>
+<pre>public static&nbsp;<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>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1285">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>&nbsp;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>
@@ -1625,7 +1657,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1279">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>&nbsp;s)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1299">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>&nbsp;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>
@@ -1641,7 +1673,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1301">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>&nbsp;s)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1321">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>&nbsp;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>
@@ -1657,7 +1689,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&nbsp;char&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1321">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>&nbsp;s)</pre>
+<pre>public static&nbsp;char&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1341">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>&nbsp;s)</pre>
 <div class="block">Returns the first non-whitespace character in the string.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1673,7 +1705,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&nbsp;char&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1337">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>&nbsp;s,
+<pre>public static&nbsp;char&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1357">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>&nbsp;s,
                           int&nbsp;i)</pre>
 <div class="block">Returns the character at the specified index in the string without throwing exceptions.</div>
 <dl>
@@ -1692,7 +1724,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&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1351">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>&nbsp;s)</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1371">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>&nbsp;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>
@@ -1708,7 +1740,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&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1404">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>&nbsp;s)</pre>
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1424">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>&nbsp;s)</pre>
 <div class="block">Efficiently determines whether a URL is of the pattern "xxx:/xxx".
  <p>
  The pattern matched is: <code>[a-z]{2,}\:\/.*</code>
@@ -1728,7 +1760,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1450">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>&nbsp;s)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1470">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>&nbsp;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>
@@ -1744,7 +1776,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&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1503">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>&nbsp;o)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1523">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>&nbsp;o)</pre>
 <div class="block">Converts the specified object to a URI.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1757,10 +1789,10 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <a name="firstNonEmpty-java.lang.String...-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>firstNonEmpty</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1519">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>...&nbsp;s)</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1539">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>...&nbsp;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>
@@ -1770,6 +1802,24 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </dl>
 </li>
 </ul>
+<a name="indexOf-java.lang.String-char...-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>indexOf</h4>
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/juneau/internal/StringUtils.html#line.1553">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>&nbsp;s,
+                          char...&nbsp;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 mulitiple characters.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>s</code> - The string to check.</dd>
+<dd><code>c</code> - The characters to check for.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The index into the string that is one of the specified characters.</dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/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 eb223f7..bd05d83 100644
--- a/content/site/apidocs/org/apache/juneau/microservice/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/microservice/package-summary.html
@@ -740,14 +740,14 @@
                <ul>
                   <li><l>$R{attribute.X}</l> - Value returned by <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> converted to a string.
                   <li><l>$R{contextPath}</l> - Value returned by <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"><code>HttpServletRequestWrapper.getContextPath()</code></a>.
-                  <li><l>$R{formData.X}</l> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getFirst-java.lang.String-"><code>RequestFormData.getFirst(String)</code></a>.
-                  <li><l>$R{header.X}</l> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getFirst-java.lang.String-"><code>RequestHeaders.getFirst(String)</code></a>.
+                  <li><l>$R{formData.X}</l> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-"><code>RequestFormData.getString(String)</code></a>.
+                  <li><l>$R{header.X}</l> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-"><code>RequestHeaders.getString(String)</code></a>.
                   <li><l>$R{method}</l> - Value returned by <a href="../../../../org/apache/juneau/rest/RestRequest.html#getMethod--"><code>RestRequest.getMethod()</code></a>.
                   <li><l>$R{methodSummary}</l> - Value returned by <a href="../../../../org/apache/juneau/rest/RestRequest.html#getMethodSummary--"><code>RestRequest.getMethodSummary()</code></a>.
                   <li><l>$R{methodDescription}</l> - Value returned by <a href="../../../../org/apache/juneau/rest/RestRequest.html#getMethodDescription--"><code>RestRequest.getMethodDescription()</code></a>.
                   <li><l>$R{path.X}</l> - Value returned by <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html?is-external=true#get-java.lang.Object-" title="class or interface in java.util"><code>TreeMap.get(Object)</code></a>.
                   <li><l>$R{pathInfo}</l> - Value returned by <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"><code>HttpServletRequestWrapper.getPathInfo()</code></a>.
-                  <li><l>$R{query.X}</l> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getFirst-java.lang.String-"><code>RequestQuery.getFirst(String)</code></a>.
+                  <li><l>$R{query.X}</l> - Value returned by <a href="../../../../org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-"><code>RequestQuery.getString(String)</code></a>.
                   <li><l>$R{requestParentURI}</l> - Value returned by <a href="../../../../org/apache/juneau/UriContext.html#getRootRelativePathInfoParent--"><code>UriContext.getRootRelativePathInfoParent()</code></a>.
                   <li><l>$R{requestURI}</l> - Value returned by <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"><code>HttpServletRequestWrapper.getRequestURI()</code></a>.
                   <li><l>$R{servletDescription}</l> - Value returned by <a href="../../../../org/apache/juneau/rest/RestRequest.html#getServletDescription--"><code>RestRequest.getServletDescription()</code></a>.



[19/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/ObjectMap.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/ObjectMap.html b/content/site/apidocs/org/apache/juneau/ObjectMap.html
index db77d22..899128c 100644
--- a/content/site/apidocs/org/apache/juneau/ObjectMap.html
+++ b/content/site/apidocs/org/apache/juneau/ObjectMap.html
@@ -816,7 +816,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>ObjectMap</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.163">ObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/CharSequence.html?is-external=true" title="class or interface in java.lang">CharSequence</a>&nbsp;s)
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.167">ObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/CharSequence.html?is-external=true" title="class or interface in java.lang">CharSequence</a>&nbsp;s)
           throws <a href="../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
 <div class="block">Shortcut for <code><jk>new</jk> ObjectMap(string,JsonParser.<jsf>DEFAULT</jsf>);</code></div>
 <dl>
@@ -833,7 +833,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>ObjectMap</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.175">ObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;r,
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.179">ObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;r,
                  <a href="../../../org/apache/juneau/parser/Parser.html" title="class in org.apache.juneau.parser">Parser</a>&nbsp;p)
           throws <a href="../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</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>
@@ -854,7 +854,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>ObjectMap</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.187">ObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;r)
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.191">ObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;r)
           throws <a href="../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</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>
 <div class="block">Shortcut for <code><jk>new</jk> ObjectMap(reader, JsonParser.<jsf>DEFAULT</jsf>)</code>.</div>
@@ -873,7 +873,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>ObjectMap</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.201">ObjectMap</a>()</pre>
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.205">ObjectMap</a>()</pre>
 <div class="block">Construct an empty JSON object (i.e. an empty <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html?is-external=true" title="class or interface in java.util"><code>LinkedHashMap</code></a>).</div>
 </li>
 </ul>
@@ -883,7 +883,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>ObjectMap</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.210">ObjectMap</a>(<a href="../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;session)</pre>
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.214">ObjectMap</a>(<a href="../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;session)</pre>
 <div class="block">Construct an empty JSON object (i.e. an empty <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html?is-external=true" title="class or interface in java.util"><code>LinkedHashMap</code></a>) with the specified bean context.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -897,7 +897,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ObjectMap</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.219">ObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,?&gt;&nbsp;m)</pre>
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.223">ObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,?&gt;&nbsp;m)</pre>
 <div class="block">Construct a JSON object and fill it with the contents from the specified <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -919,7 +919,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>setInner</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.245">setInner</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;inner)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.249">setInner</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;inner)</pre>
 <div class="block">Set an inner map in this map to allow for chained get calls.
  <p>
  If <a href="../../../org/apache/juneau/ObjectMap.html#get-java.lang.Object-"><code>get(Object)</code></a> returns <jk>null</jk>, then <a href="../../../org/apache/juneau/ObjectMap.html#get-java.lang.Object-"><code>get(Object)</code></a> will be called on the inner map.
@@ -949,7 +949,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>findKeyIgnoreCase</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.256">findKeyIgnoreCase</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.260">findKeyIgnoreCase</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Searches for the specified key in this map ignoring case.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -965,7 +965,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>setBeanSession</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.273">setBeanSession</a>(<a href="../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;session)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.277">setBeanSession</a>(<a href="../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;session)</pre>
 <div class="block">Override the default bean session used for converting POJOs.
  <p>
  Default is <a href="../../../org/apache/juneau/BeanContext.html#DEFAULT"><code>BeanContext.DEFAULT</code></a>, which is sufficient in most cases.
@@ -985,7 +985,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getBeanSession</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.283">getBeanSession</a>()</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.287">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> currently associated with this map.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -999,7 +999,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>append</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.297">append</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.301">append</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</pre>
 <div class="block">Convenience method for adding multiple objects to this map.
  <p>
@@ -1020,7 +1020,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>appendAll</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.311">appendAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;m)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.315">appendAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;m)</pre>
 <div class="block">Convenience method for adding a contents of another map to this map.
  <p>
  Equivalent to calling <code>putAll(m)</code>, but returns
@@ -1039,7 +1039,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.317">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.321">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true#get-java.lang.Object-" title="class or interface in java.util">get</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;</code></dd>
@@ -1054,7 +1054,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.332">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.336">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                   <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;def)</pre>
 <div class="block">Same as <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true#get-java.lang.Object-" title="class or interface in java.util"><code>get()</code></a>, but returns the default value if the key
  could not be found.</div>
@@ -1073,7 +1073,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.347">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.351">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Same as <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true#get-java.lang.Object-" title="class or interface in java.util"><code>get()</code></a>, but casts or converts the value to the specified class type.
  <p>
@@ -1095,7 +1095,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.361">get</a>(<a href="../../../org/apache/juneau/transform/PojoSwap.html" title="class in org.apache.juneau.transform">PojoSwap</a>&lt;T,?&gt;&nbsp;pojoSwap,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.365">get</a>(<a href="../../../org/apache/juneau/transform/PojoSwap.html" title="class in org.apache.juneau.transform">PojoSwap</a>&lt;T,?&gt;&nbsp;pojoSwap,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)
           throws <a href="../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
 <div class="block">Same as <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true#get-java.lang.Object-" title="class or interface in java.util"><code>get()</code></a>, but converts the raw value to the specified class type using the specified beanFilter.</div>
@@ -1120,7 +1120,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.381">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.385">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                  T&nbsp;def)</pre>
 <div class="block">Same as <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true#get-java.lang.Object-" title="class or interface in java.util"><code>get()</code></a>, but casts or converts the value to the specified class type.
@@ -1144,7 +1144,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.405">get</a>(<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;T&gt;&nbsp;type,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.409">get</a>(<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;T&gt;&nbsp;type,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Same as <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true#get-java.lang.Object-" title="class or interface in java.util"><code>get()</code></a>, but casts or converts the value to the specified class type.
  <p>
@@ -1168,7 +1168,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.420">get</a>(<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;T&gt;&nbsp;type,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.424">get</a>(<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;T&gt;&nbsp;type,
                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                  T&nbsp;def)</pre>
 <div class="block">Same as <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true#get-java.lang.Object-" title="class or interface in java.util"><code>get()</code></a>, but casts or converts the value to the specified class type.
@@ -1192,7 +1192,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>find</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.433">find</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.437">find</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns the value for the first key in the list that has an entry in this map.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1208,7 +1208,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>find</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.452">find</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.456">find</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
                   <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns the value for the first key in the list that has an entry in this map.
  <p>
@@ -1232,7 +1232,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getAt</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.483">getAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.487">getAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block">Same as <a href="../../../org/apache/juneau/ObjectMap.html#get-java.lang.Class-java.lang.String-"><code>get(Class,String)</code></a>, but the key is a slash-delimited
    path used to traverse entries in this POJO.
@@ -1268,7 +1268,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>putAt</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.510">putAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.514">putAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</pre>
 <div class="block">Same as <code>put(String,Object)</code>, but the key is a slash-delimited
    path used to traverse entries in this POJO.
@@ -1302,7 +1302,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>postAt</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.537">postAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.541">postAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</pre>
 <div class="block">Similar to <a href="../../../org/apache/juneau/ObjectMap.html#putAt-java.lang.String-java.lang.Object-"><code>putAt(String,Object)</code></a>, but used to append
    to collections and arrays.
@@ -1336,7 +1336,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteAt</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.563">deleteAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.567">deleteAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block">Similar to <a href="http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html?is-external=true#remove-java.lang.Object-" title="class or interface in java.util"><code>remove(Object)</code></a>,but the key is a slash-delimited
    path used to traverse entries in this POJO.
  <p>
@@ -1368,7 +1368,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>putJson</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.576">putJson</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.580">putJson</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;json)
              throws <a href="../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
 <div class="block">Convenience method for inserting JSON directly into an attribute on this object.
@@ -1389,7 +1389,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.588">getString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.592">getString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Returns the specified entry value converted to a <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>.
  <p>
  Shortcut for <code>get(String.<jk>class</jk>, key)</code>.</div>
@@ -1407,7 +1407,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getStringArray</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.599">getStringArray</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.603">getStringArray</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Specialized method that calls <a href="../../../org/apache/juneau/ObjectMap.html#getString-java.lang.String-"><code>getString(String)</code></a> and splits the
    results as a simple comma-delimited list.</div>
 <dl>
@@ -1424,7 +1424,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getStringArray</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.611">getStringArray</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.615">getStringArray</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                                <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;def)</pre>
 <div class="block">Same as <a href="../../../org/apache/juneau/ObjectMap.html#getStringArray-java.lang.String-"><code>getStringArray(String)</code></a> but returns a default value if the value cannot be found.</div>
 <dl>
@@ -1442,7 +1442,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.626">getString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.630">getString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;defVal)</pre>
 <div class="block">Returns the specified entry value converted to a <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>.
  <p>
@@ -1462,7 +1462,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getInt</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.639">getInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.643">getInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Returns the specified entry value converted to an <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang"><code>Integer</code></a>.
  <p>
  Shortcut for <code>get(Integer.<jk>class</jk>, key)</code>.</div>
@@ -1482,7 +1482,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getInt</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.653">getInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.657">getInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;defVal)</pre>
 <div class="block">Returns the specified entry value converted to an <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang"><code>Integer</code></a>.
  <p>
@@ -1504,7 +1504,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getLong</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.666">getLong</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<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>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.670">getLong</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Returns the specified entry value converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang"><code>Long</code></a>.
  <p>
  Shortcut for <code>get(Long.<jk>class</jk>, key)</code>.</div>
@@ -1524,7 +1524,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getLong</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.680">getLong</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.684">getLong</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;defVal)</pre>
 <div class="block">Returns the specified entry value converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang"><code>Long</code></a>.
  <p>
@@ -1546,7 +1546,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getBoolean</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.693">getBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.697">getBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Returns the specified entry value converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang"><code>Boolean</code></a>.
  <p>
  Shortcut for <code>get(Boolean.<jk>class</jk>, key)</code>.</div>
@@ -1566,7 +1566,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getBoolean</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.707">getBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.711">getBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                           <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;defVal)</pre>
 <div class="block">Returns the specified entry value converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang"><code>Boolean</code></a>.
  <p>
@@ -1588,7 +1588,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getMap</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.720">getMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.724">getMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Returns the specified entry value converted to 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"><code>Map</code></a>.
  <p>
  Shortcut for <code>get(Map.<jk>class</jk>, key)</code>.</div>
@@ -1608,7 +1608,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getMap</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.734">getMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.738">getMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                        <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,?&gt;&nbsp;defVal)</pre>
 <div class="block">Returns the specified entry value converted to 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"><code>Map</code></a>.
  <p>
@@ -1630,7 +1630,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getList</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.747">getList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.751">getList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Returns the specified entry value converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util"><code>List</code></a>.
  <p>
  Shortcut for <code>get(List.<jk>class</jk>, key)</code>.</div>
@@ -1650,7 +1650,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getList</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.761">getList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.765">getList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                        <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;defVal)</pre>
 <div class="block">Returns the specified entry value converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util"><code>List</code></a>.
  <p>
@@ -1672,7 +1672,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getObjectMap</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.774">getObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.778">getObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Returns the specified entry value converted to 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"><code>Map</code></a>.
  <p>
  Shortcut for <code>get(ObjectMap.<jk>class</jk>, key)</code>.</div>
@@ -1692,7 +1692,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getObjectMap</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.788">getObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.792">getObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                               <a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;defVal)</pre>
 <div class="block">Returns the specified entry value converted to a <a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau"><code>ObjectMap</code></a>.
  <p>
@@ -1714,7 +1714,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getObjectList</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.801">getObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.805">getObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Returns the specified entry value converted to a <a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau"><code>ObjectList</code></a>.
  <p>
  Shortcut for <code>get(ObjectList.<jk>class</jk>, key)</code>.</div>
@@ -1734,7 +1734,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getObjectList</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.815">getObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.819">getObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                                 <a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;defVal)</pre>
 <div class="block">Returns the specified entry value converted to a <a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau"><code>ObjectList</code></a>.
  <p>
@@ -1756,7 +1756,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>findString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.828">findString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.832">findString</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns the first entry that exists converted to a <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>.
  <p>
  Shortcut for <code>find(String.<jk>class</jk>, keys)</code>.</div>
@@ -1775,7 +1775,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>findInt</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.842">findInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.846">findInt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns the first entry that exists converted to an <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang"><code>Integer</code></a>.
  <p>
  Shortcut for <code>find(Integer.<jk>class</jk>, keys)</code>.</div>
@@ -1796,7 +1796,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>findLong</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.856">findLong</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.860">findLong</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns the first entry that exists converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang"><code>Long</code></a>.
  <p>
  Shortcut for <code>find(Long.<jk>class</jk>, keys)</code>.</div>
@@ -1817,7 +1817,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>findBoolean</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.870">findBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.874">findBoolean</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns the first entry that exists converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang"><code>Boolean</code></a>.
  <p>
  Shortcut for <code>find(Boolean.<jk>class</jk>, keys)</code>.</div>
@@ -1838,7 +1838,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>findMap</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.884">findMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.888">findMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns the first entry that exists converted to 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"><code>Map</code></a>.
  <p>
  Shortcut for <code>find(Map.<jk>class</jk>, keys)</code>.</div>
@@ -1859,7 +1859,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>findList</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.898">findList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.902">findList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns the first entry that exists converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util"><code>List</code></a>.
  <p>
  Shortcut for <code>find(List.<jk>class</jk>, keys)</code>.</div>
@@ -1880,7 +1880,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>findObjectMap</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.912">findObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.916">findObjectMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns the first entry that exists converted to a <a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau"><code>ObjectMap</code></a>.
  <p>
  Shortcut for <code>find(ObjectMap.<jk>class</jk>, keys)</code>.</div>
@@ -1901,7 +1901,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>findObjectList</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.926">findObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.930">findObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns the first entry that exists converted to a <a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau"><code>ObjectList</code></a>.
  <p>
  Shortcut for <code>find(ObjectList.<jk>class</jk>, keys)</code>.</div>
@@ -1922,7 +1922,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getFirstKey</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.935">getFirstKey</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.939">getFirstKey</a>()</pre>
 <div class="block">Returns the first key in the map.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1936,7 +1936,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>getClassMeta</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.945">getClassMeta</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.949">getClassMeta</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
 <div class="block">Returns the class type of the object at the specified index.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1954,7 +1954,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>remove</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.959">remove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.963">remove</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                     T&nbsp;defVal)</pre>
 <div class="block">Equivalent to calling <code>get(class,key,def)</code> followed by <code>remove(key);</code></div>
@@ -1978,7 +1978,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>removeAll</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.971">removeAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;keys)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.975">removeAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;keys)</pre>
 <div class="block">Convenience method for removing several keys at once.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1992,7 +1992,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>removeAll</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.981">removeAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.985">removeAll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Convenience method for removing several keys at once.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2006,7 +2006,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>containsKey</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.987">containsKey</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.991">containsKey</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true#containsKey-java.lang.Object-" title="class or interface in java.util">containsKey</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;</code></dd>
@@ -2021,7 +2021,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>containsOuterKey</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1002">containsOuterKey</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1006">containsOuterKey</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;key)</pre>
 <div class="block">Returns <jk>true</jk> if this map contains the specified key, ignoring
    the inner map if it exists.</div>
 <dl>
@@ -2038,7 +2038,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>include</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1012">include</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1016">include</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns a copy of this <code>ObjectMap</code> with only the specified keys.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2054,7 +2054,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>exclude</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1027">exclude</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1031">exclude</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keys)</pre>
 <div class="block">Returns a copy of this <code>ObjectMap</code> without the specified keys.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2070,7 +2070,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>putIfNull</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1047">putIfNull</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1051">putIfNull</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                            <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;val)</pre>
 <div class="block">Sets a value in this map if the entry does not exist or the value is <jk>null</jk>.</div>
 <dl>
@@ -2088,7 +2088,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>putIfEmpty</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1061">putIfEmpty</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1065">putIfEmpty</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                             <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;val)</pre>
 <div class="block">Sets a value in this map if the entry does not exist or the value is <jk>null</jk> or an empty string.</div>
 <dl>
@@ -2106,7 +2106,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>cast</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1081">cast</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type)</pre>
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1085">cast</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type)</pre>
 <div class="block">Converts this map into an object of the specified type.
  <p>
  If this map contains a <js>"_type"</js> entry, it must be the same as or a subclass
@@ -2130,7 +2130,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>cast</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1101">cast</a>(<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;T&gt;&nbsp;cm)</pre>
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1105">cast</a>(<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;T&gt;&nbsp;cm)</pre>
 <div class="block">Same as <a href="../../../org/apache/juneau/ObjectMap.html#cast-java.lang.Class-"><code>cast(Class)</code></a>, except allows you to specify a <a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau"><code>ClassMeta</code></a> parameter.</div>
 <dl>
 <dt><span class="paramLabel">Type Parameters:</span></dt>
@@ -2151,7 +2151,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1215">toString</a>(<a href="../../../org/apache/juneau/serializer/WriterSerializer.html" title="class in org.apache.juneau.serializer">WriterSerializer</a>&nbsp;serializer)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1219">toString</a>(<a href="../../../org/apache/juneau/serializer/WriterSerializer.html" title="class in org.apache.juneau.serializer">WriterSerializer</a>&nbsp;serializer)
                 throws <a href="../../../org/apache/juneau/serializer/SerializeException.html" title="class in org.apache.juneau.serializer">SerializeException</a></pre>
 <div class="block">Serialize this object into a string using the specified serializer.</div>
 <dl>
@@ -2170,7 +2170,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1223">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1227">toString</a>()</pre>
 <div class="block">Serialize this object into a JSON string using the <a href="../../../org/apache/juneau/json/JsonSerializer.html#DEFAULT"><code>JsonSerializer.DEFAULT</code></a> serializer.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -2184,7 +2184,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeTo</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1240">serializeTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;w)
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1244">serializeTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;w)
                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                              <a href="../../../org/apache/juneau/serializer/SerializeException.html" title="class in org.apache.juneau.serializer">SerializeException</a></pre>
 <div class="block">Convenience method for serializing this map to the specified <code>Writer</code> using
@@ -2206,7 +2206,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockList">
 <li class="blockList">
 <h4>keySet</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1246">keySet</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1250">keySet</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true#keySet--" title="class or interface in java.util">keySet</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;</code></dd>
@@ -2221,7 +2221,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMa
 <ul class="blockListLast">
 <li class="blockList">
 <h4>entrySet</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1256">entrySet</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectMap.html#line.1260">entrySet</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true#entrySet--" title="class or interface in java.util">entrySet</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;</code></dd>


[12/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.Builder.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.Builder.html b/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.Builder.html
index 10b970a..f9e091e 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.Builder.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.Builder.html
@@ -220,779 +220,801 @@
 <span class="sourceLineNo">212</span>         if (typeMeta == null)<a name="line.212"></a>
 <span class="sourceLineNo">213</span>            typeMeta = rawTypeMeta;<a name="line.213"></a>
 <span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>         System.err.println("swap=" + swap);<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>         return true;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>      /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span>       * @return A new BeanPropertyMeta object using this builder.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>       */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      public BeanPropertyMeta build() {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>         return new BeanPropertyMeta(this);<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>      private static PojoSwap getPropertyPojoSwap(BeanProperty p) throws Exception {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>         if (! p.format().isEmpty())<a name="line.228"></a>
-<span class="sourceLineNo">229</span>            return newInstance(PojoSwap.class, StringFormatSwap.class, p.format());<a name="line.229"></a>
-<span class="sourceLineNo">230</span>         Class&lt;?&gt; c = p.swap();<a name="line.230"></a>
-<span class="sourceLineNo">231</span>         if (c == Null.class)<a name="line.231"></a>
-<span class="sourceLineNo">232</span>            return null;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>         if (isParentClass(PojoSwap.class, c))<a name="line.233"></a>
-<span class="sourceLineNo">234</span>            return newInstance(PojoSwap.class, c);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>         throw new RuntimeException("TODO - Surrogate swaps not yet supported.");<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>      BeanPropertyMeta.Builder setGetter(Method getter) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>         setAccessible(getter);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>         this.getter = getter;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>         return this;<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>      BeanPropertyMeta.Builder setSetter(Method setter) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>         setAccessible(setter);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>         this.setter = setter;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>         return this;<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>      BeanPropertyMeta.Builder setField(Field field) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>         setAccessible(field);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>         this.field = field;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>         return this;<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>      BeanPropertyMeta.Builder setAsConstructorArg() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>         this.isConstructorArg = true;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>         return this;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      }<a name="line.259"></a>
+<span class="sourceLineNo">215</span>         return true;<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>       * @return A new BeanPropertyMeta object using this builder.<a name="line.219"></a>
+<span class="sourceLineNo">220</span>       */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      public BeanPropertyMeta build() {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>         return new BeanPropertyMeta(this);<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>      private static PojoSwap getPropertyPojoSwap(BeanProperty p) throws Exception {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>         if (! p.format().isEmpty())<a name="line.226"></a>
+<span class="sourceLineNo">227</span>            return newInstance(PojoSwap.class, StringFormatSwap.class, p.format());<a name="line.227"></a>
+<span class="sourceLineNo">228</span>         Class&lt;?&gt; c = p.swap();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>         if (c == Null.class)<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            return null;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>         if (isParentClass(PojoSwap.class, c))<a name="line.231"></a>
+<span class="sourceLineNo">232</span>            return newInstance(PojoSwap.class, c);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>         throw new RuntimeException("TODO - Surrogate swaps not yet supported.");<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>      BeanPropertyMeta.Builder setGetter(Method getter) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>         setAccessible(getter);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>         this.getter = getter;<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>      BeanPropertyMeta.Builder setSetter(Method setter) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>         setAccessible(setter);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>         this.setter = setter;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>         return this;<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>      BeanPropertyMeta.Builder setField(Field field) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>         setAccessible(field);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>         this.field = field;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>         return this;<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>      BeanPropertyMeta.Builder setAsConstructorArg() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>         this.isConstructorArg = true;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>         return this;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>   }<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><a name="line.262"></a>
-<span class="sourceLineNo">263</span>   /**<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    * Creates a new BeanPropertyMeta using the contents of the specified builder.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    *<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    * @param b The builder to copy fields from.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   protected BeanPropertyMeta(BeanPropertyMeta.Builder b) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.field = b.field;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      this.getter = b.getter;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.setter = b.setter;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      this.isUri = b.isUri;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      this.beanMeta = b.beanMeta;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      this.beanContext = b.beanContext;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      this.name = b.name;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      this.rawTypeMeta = b.rawTypeMeta;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      this.typeMeta = b.typeMeta;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.properties = b.properties;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.swap = b.swap;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.beanRegistry = b.beanRegistry;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.overrideValue = b.overrideValue;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      this.delegateFor = b.delegateFor;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      this.extMeta = b.extMeta;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      this.isDyna = b.isDyna;<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>   /**<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    * Returns the name of this bean property.<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    *<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    * @return The name of the bean property.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   public String getName() {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      return name;<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>    * Returns the bean meta that this property belongs to.<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    *<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    * @return The bean meta that this property belongs to.<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    */<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   @BeanIgnore<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   public BeanMeta&lt;?&gt; getBeanMeta() {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return beanMeta;<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>    * Returns the getter method for this property.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    *<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    * @return The getter method for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no getter method.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   public Method getGetter() {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      return getter;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>   /**<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    * Returns the setter method for this property.<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    *<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    * @return The setter method for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no setter method.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   public Method getSetter() {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      return setter;<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>    * Returns the field for this property.<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    *<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    * @return The field for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no field associated with this bean property.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    */<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   public Field getField() {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      return field;<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>   /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    * Returns the {@link ClassMeta} of the class of this property.<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    * &lt;p&gt;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    * If this property or the property type class has a {@link PojoSwap} associated with it, this<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    *    method returns the transformed class meta.<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    * This matches the class type that is used by the {@link #get(BeanMap,String)} and {@link #set(BeanMap,String,Object)} methods.<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    *<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    * @return The {@link ClassMeta} of the class of this property.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   public ClassMeta&lt;?&gt; getClassMeta() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      return typeMeta;<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>    * Returns the bean dictionary in use for this bean property.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    * The order of lookup for the dictionary is as follows:<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    * &lt;ol&gt;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    *    &lt;li&gt;Dictionary defined via {@link BeanProperty#beanDictionary()}.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    *    &lt;li&gt;Dictionary defined via {@link BeanContext#BEAN_beanDictionary} context property.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    * &lt;/ol&gt;<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    * @return The bean dictionary in use for this bean property.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    */<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   public BeanRegistry getBeanRegistry() {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      return beanRegistry;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>   /**<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if this bean property is a URI.<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    * &lt;p&gt;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    * A bean property can be considered a URI if any of the following are true:<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    * &lt;ul class='spaced-list'&gt;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    *    &lt;li&gt;Property class type is {@link URL} or {@link URI}.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    *    &lt;li&gt;Property class type is annotated with {@link org.apache.juneau.annotation.URI}.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    *    &lt;li&gt;Property getter, setter, or field is annotated with {@link org.apache.juneau.annotation.URI}.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    * &lt;/ul&gt;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    *<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if this bean property is a URI.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   public boolean isUri() {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      return isUri;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>   /**<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if this bean property is named &lt;js&gt;"*"&lt;/js&gt;.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if this bean property is named &lt;js&gt;"*"&lt;/js&gt;.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   public boolean isDyna() {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return isDyna;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>   }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>   /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    * Returns the override list of properties defined through a {@link BeanProperty#properties()} annotation<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    * on this property.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    * @return The list of override properties, or &lt;jk&gt;null&lt;/jk&gt; if annotation not specified.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   public String[] getProperties() {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      return properties;<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>   /**<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    * Returns the language-specified extended metadata on this bean property.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    *<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    * @param c The name of the metadata class to create.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    * @return Extended metadata on this bean property.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    */<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   public &lt;M extends BeanPropertyMetaExtended&gt; M getExtendedMeta(Class&lt;M&gt; c) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      if (delegateFor != null)<a name="line.400"></a>
-<span class="sourceLineNo">401</span>         return delegateFor.getExtendedMeta(c);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      return extMeta.get(c, 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>    * Equivalent to calling {@link BeanMap#get(Object)}, but is faster since it avoids looking up the property meta.<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    *<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    * @param m The bean map to get the transformed value from.<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    * @param pName The property name.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    * @return The property value.<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    */<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   public Object get(BeanMap&lt;?&gt; m, String pName) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      try {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>         if (overrideValue != null)<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            return overrideValue;<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>         // Read-only beans have their properties stored in a cache until getBean() is called.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>         Object bean = m.bean;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>         if (bean == null)<a name="line.419"></a>
-<span class="sourceLineNo">420</span>            return m.propertyCache.get(name);<a name="line.420"></a>
+<span class="sourceLineNo">261</span>   /**<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    * Creates a new BeanPropertyMeta using the contents of the specified builder.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    *<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    * @param b The builder to copy fields from.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    */<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   protected BeanPropertyMeta(BeanPropertyMeta.Builder b) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      this.field = b.field;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      this.getter = b.getter;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      this.setter = b.setter;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      this.isUri = b.isUri;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      this.beanMeta = b.beanMeta;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      this.beanContext = b.beanContext;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      this.name = b.name;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this.rawTypeMeta = b.rawTypeMeta;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this.typeMeta = b.typeMeta;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      this.properties = b.properties;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      this.swap = b.swap;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      this.beanRegistry = b.beanRegistry;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      this.overrideValue = b.overrideValue;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      this.delegateFor = b.delegateFor;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.extMeta = b.extMeta;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.isDyna = b.isDyna;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   }<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>    * Returns the name of this bean property.<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    *<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    * @return The name of the bean property.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   public String getName() {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      return name;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>   /**<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    * Returns the bean meta that this property belongs to.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    *<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    * @return The bean meta that this property belongs to.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    */<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   @BeanIgnore<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   public BeanMeta&lt;?&gt; getBeanMeta() {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      return beanMeta;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>   }<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>   /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    * Returns the getter method for this property.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    *<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    * @return The getter method for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no getter method.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    */<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   public Method getGetter() {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return getter;<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>    * Returns the setter method for this property.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    *<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    * @return The setter method for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no setter method.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    */<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   public Method getSetter() {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      return setter;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>   /**<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    * Returns the field for this property.<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    *<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    * @return The field for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no field associated with this bean property.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    */<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   public Field getField() {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      return field;<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>    * Returns the {@link ClassMeta} of the class of this property.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    * &lt;p&gt;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    * If this property or the property type class has a {@link PojoSwap} associated with it, this<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    *    method returns the transformed class meta.<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    * This matches the class type that is used by the {@link #get(BeanMap,String)} and {@link #set(BeanMap,String,Object)} methods.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    *<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    * @return The {@link ClassMeta} of the class of this property.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    */<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   public ClassMeta&lt;?&gt; getClassMeta() {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      return typeMeta;<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>    * Returns the bean dictionary in use for this bean property.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    * The order of lookup for the dictionary is as follows:<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    * &lt;ol&gt;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    *    &lt;li&gt;Dictionary defined via {@link BeanProperty#beanDictionary()}.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    *    &lt;li&gt;Dictionary defined via {@link BeanContext#BEAN_beanDictionary} context property.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    * &lt;/ol&gt;<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    * @return The bean dictionary in use for this bean property.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    */<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   public BeanRegistry getBeanRegistry() {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      return beanRegistry;<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>    * Returns &lt;jk&gt;true&lt;/jk&gt; if this bean property is a URI.<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    * &lt;p&gt;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    * A bean property can be considered a URI if any of the following are true:<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    * &lt;ul class='spaced-list'&gt;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    *    &lt;li&gt;Property class type is {@link URL} or {@link URI}.<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    *    &lt;li&gt;Property class type is annotated with {@link org.apache.juneau.annotation.URI}.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    *    &lt;li&gt;Property getter, setter, or field is annotated with {@link org.apache.juneau.annotation.URI}.<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    * &lt;/ul&gt;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    *<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if this bean property is a URI.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   public boolean isUri() {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      return isUri;<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>    * Returns &lt;jk&gt;true&lt;/jk&gt; if this bean property is named &lt;js&gt;"*"&lt;/js&gt;.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if this bean property is named &lt;js&gt;"*"&lt;/js&gt;.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   public boolean isDyna() {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      return isDyna;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   }<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>   /**<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    * Returns the override list of properties defined through a {@link BeanProperty#properties()} annotation<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    * on this property.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    *<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    * @return The list of override properties, or &lt;jk&gt;null&lt;/jk&gt; if annotation not specified.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    */<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   public String[] getProperties() {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      return properties;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   }<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>   /**<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    * Returns the language-specified extended metadata on this bean property.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    *<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    * @param c The name of the metadata class to create.<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    * @return Extended metadata on this bean property.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    */<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   public &lt;M extends BeanPropertyMetaExtended&gt; M getExtendedMeta(Class&lt;M&gt; c) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      if (delegateFor != null)<a name="line.398"></a>
+<span class="sourceLineNo">399</span>         return delegateFor.getExtendedMeta(c);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      return extMeta.get(c, this);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>   /**<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    * Equivalent to calling {@link BeanMap#get(Object)}, but is faster since it avoids looking up the property meta.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    *<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    * @param m The bean map to get the transformed value from.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    * @param pName The property name.<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    * @return The property value.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    */<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   public Object get(BeanMap&lt;?&gt; m, String pName) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      try {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>         if (overrideValue != null)<a name="line.412"></a>
+<span class="sourceLineNo">413</span>            return overrideValue;<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>         // Read-only beans have their properties stored in a cache until getBean() is called.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>         Object bean = m.bean;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>         if (bean == null)<a name="line.417"></a>
+<span class="sourceLineNo">418</span>            return m.propertyCache.get(name);<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>         return toSerializedForm(m.getBeanSession(), getRaw(m, pName));<a name="line.420"></a>
 <span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>         Object o = invokeGetter(bean, pName);<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>         return toSerializedForm(m.getBeanSession(), o);<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>      } catch (Throwable e) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>         if (beanContext.ignoreInvocationExceptionsOnGetters) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>            if (rawTypeMeta.isPrimitive())<a name="line.428"></a>
-<span class="sourceLineNo">429</span>               return rawTypeMeta.getPrimitiveDefault();<a name="line.429"></a>
-<span class="sourceLineNo">430</span>            return null;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>         }<a name="line.431"></a>
-<span class="sourceLineNo">432</span>         throw new BeanRuntimeException(beanMeta.c, "Exception occurred while getting property ''{0}''", name).initCause(e);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   }<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>   /**<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    * Converts a raw bean property value to serialized form.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    * Applies transforms and child property filters.<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    */<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   final Object toSerializedForm(BeanSession session, Object o) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      try {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>         o = transform(session, o);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>         if (o == null)<a name="line.443"></a>
-<span class="sourceLineNo">444</span>            return null;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>         if (properties != null) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>            if (rawTypeMeta.isArray()) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>               Object[] a = (Object[])o;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>               List l = new DelegateList(rawTypeMeta);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>               ClassMeta childType = rawTypeMeta.getElementType();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>               for (Object c : a)<a name="line.450"></a>
-<span class="sourceLineNo">451</span>                  l.add(applyChildPropertiesFilter(session, childType, c));<a name="line.451"></a>
-<span class="sourceLineNo">452</span>               return l;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>            } else if (rawTypeMeta.isCollection()) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>               Collection c = (Collection)o;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>               List l = new ArrayList(c.size());<a name="line.455"></a>
-<span class="sourceLineNo">456</span>               ClassMeta childType = rawTypeMeta.getElementType();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>               for (Object cc : c)<a name="line.457"></a>
-<span class="sourceLineNo">458</span>                  l.add(applyChildPropertiesFilter(session, childType, cc));<a name="line.458"></a>
-<span class="sourceLineNo">459</span>               return l;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>            } else {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>               return applyChildPropertiesFilter(session, rawTypeMeta, o);<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>         return o;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      } catch (SerializeException e) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>         throw new BeanRuntimeException(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>   /**<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    * Equivalent to calling {@link BeanMap#put(String, Object)}, but is faster since it avoids<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    *    looking up the property meta.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    *<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    * @param m The bean map to set the property value on.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    * @param pName The property name.<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    * @param value The value to set.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    * @return The previous property value.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    * @throws BeanRuntimeException If property could not be set.<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    */<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   public Object set(BeanMap&lt;?&gt; m, String pName, Object value) throws BeanRuntimeException {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      try {<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span>         BeanSession session = m.getBeanSession();<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>         // Comvert to raw form.<a name="line.485"></a>
-<span class="sourceLineNo">486</span>         value = unswap(session, value);<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>         if (m.bean == null) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>            // Read-only beans get their properties stored in a cache.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>            if (m.propertyCache != null)<a name="line.491"></a>
-<span class="sourceLineNo">492</span>               return m.propertyCache.put(name, value);<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>            throw new BeanRuntimeException("Non-existent bean instance on bean.");<a name="line.494"></a>
-<span class="sourceLineNo">495</span>         }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>         boolean isMap = rawTypeMeta.isMap();<a name="line.497"></a>
-<span class="sourceLineNo">498</span>         boolean isCollection = rawTypeMeta.isCollection();<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>         if ((! isDyna) &amp;&amp; field == null &amp;&amp; setter == null &amp;&amp; ! (isMap || isCollection)) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>            if ((value == null &amp;&amp; beanContext.ignoreUnknownNullBeanProperties) || beanContext.ignorePropertiesWithoutSetters)<a name="line.501"></a>
-<span class="sourceLineNo">502</span>               return null;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>            throw new BeanRuntimeException(beanMeta.c, "Setter or public field not defined on property ''{0}''", 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>         Object bean = m.getBean(true);  // Don't use getBean() because it triggers array creation!<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>         try {<a name="line.508"></a>
+<span class="sourceLineNo">422</span>      } catch (Throwable e) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>         if (beanContext.ignoreInvocationExceptionsOnGetters) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>            if (rawTypeMeta.isPrimitive())<a name="line.424"></a>
+<span class="sourceLineNo">425</span>               return rawTypeMeta.getPrimitiveDefault();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>            return null;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>         }<a name="line.427"></a>
+<span class="sourceLineNo">428</span>         throw new BeanRuntimeException(beanMeta.c, "Exception occurred while getting property ''{0}''", name).initCause(e);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>   /**<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    * Equivalent to calling {@link BeanMap#getRaw(Object)}, but is faster since it avoids looking up the property meta.<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    *<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    * @param m The bean map to get the transformed value from.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    * @param pName The property name.<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    * @return The raw property value.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   public Object getRaw(BeanMap&lt;?&gt; m, String pName) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      try {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>         // Read-only beans have their properties stored in a cache until getBean() is called.<a name="line.441"></a>
+<span class="sourceLineNo">442</span>         Object bean = m.bean;<a name="line.442"></a>
+<span class="sourceLineNo">443</span>         if (bean == null)<a name="line.443"></a>
+<span class="sourceLineNo">444</span>            return m.propertyCache.get(name);<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>         return invokeGetter(bean, pName);<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>      } catch (Throwable e) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>         if (beanContext.ignoreInvocationExceptionsOnGetters) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>            if (rawTypeMeta.isPrimitive())<a name="line.450"></a>
+<span class="sourceLineNo">451</span>               return rawTypeMeta.getPrimitiveDefault();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>            return null;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>         }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>         throw new BeanRuntimeException(beanMeta.c, "Exception occurred while getting property ''{0}''", name).initCause(e);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>   /**<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    * Converts a raw bean property value to serialized form.<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    * Applies transforms and child property filters.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>   final Object toSerializedForm(BeanSession session, Object o) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      try {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>         o = transform(session, o);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>         if (o == null)<a name="line.465"></a>
+<span class="sourceLineNo">466</span>            return null;<a name="line.466"></a>
+<span class="sourceLineNo">467</span>         if (properties != null) {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>            if (rawTypeMeta.isArray()) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>               Object[] a = (Object[])o;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>               List l = new DelegateList(rawTypeMeta);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>               ClassMeta childType = rawTypeMeta.getElementType();<a name="line.471"></a>
+<span class="sourceLineNo">472</span>               for (Object c : a)<a name="line.472"></a>
+<span class="sourceLineNo">473</span>                  l.add(applyChildPropertiesFilter(session, childType, c));<a name="line.473"></a>
+<span class="sourceLineNo">474</span>               return l;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>            } else if (rawTypeMeta.isCollection()) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>               Collection c = (Collection)o;<a name="line.476"></a>
+<span class="sourceLineNo">477</span>               List l = new ArrayList(c.size());<a name="line.477"></a>
+<span class="sourceLineNo">478</span>               ClassMeta childType = rawTypeMeta.getElementType();<a name="line.478"></a>
+<span class="sourceLineNo">479</span>               for (Object cc : c)<a name="line.479"></a>
+<span class="sourceLineNo">480</span>                  l.add(applyChildPropertiesFilter(session, childType, cc));<a name="line.480"></a>
+<span class="sourceLineNo">481</span>               return l;<a name="line.481"></a>
+<span class="sourceLineNo">482</span>            } else {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>               return applyChildPropertiesFilter(session, rawTypeMeta, o);<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>         return o;<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      } catch (SerializeException e) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>         throw new BeanRuntimeException(e);<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      }<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>    * Equivalent to calling {@link BeanMap#put(String, Object)}, but is faster since it avoids<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    *    looking up the property meta.<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    *<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    * @param m The bean map to set the property value on.<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    * @param pName The property name.<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    * @param value The value to set.<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    * @return The previous property value.<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    * @throws BeanRuntimeException If property could not be set.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    */<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   public Object set(BeanMap&lt;?&gt; m, String pName, Object value) throws BeanRuntimeException {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      try {<a name="line.503"></a>
+<span class="sourceLineNo">504</span><a name="line.504"></a>
+<span class="sourceLineNo">505</span>         BeanSession session = m.getBeanSession();<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>         // Comvert to raw form.<a name="line.507"></a>
+<span class="sourceLineNo">508</span>         value = unswap(session, value);<a name="line.508"></a>
 <span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>            Object r = beanContext.beanMapPutReturnsOldValue || isMap || isCollection ? get(m, pName) : null;<a name="line.510"></a>
-<span class="sourceLineNo">511</span>            Class&lt;?&gt; propertyClass = rawTypeMeta.getInnerClass();<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span>            if (value == null &amp;&amp; (isMap || isCollection)) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>               invokeSetter(bean, pName, null);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>               return r;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>            }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>            if (isMap) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>               if (! (value instanceof Map)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>                  if (value instanceof CharSequence)<a name="line.521"></a>
-<span class="sourceLineNo">522</span>                     value = new ObjectMap((CharSequence)value).setBeanSession(session);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>                  else<a name="line.523"></a>
-<span class="sourceLineNo">524</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}''", name, propertyClass.getName(), findClassName(value));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>               }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>               Map valueMap = (Map)value;<a name="line.527"></a>
-<span class="sourceLineNo">528</span>               Map propMap = (Map)r;<a name="line.528"></a>
-<span class="sourceLineNo">529</span>               ClassMeta&lt;?&gt; valueType = rawTypeMeta.getValueType();<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>               // If the property type is abstract, then we either need to reuse the existing<a name="line.531"></a>
-<span class="sourceLineNo">532</span>               // map (if it's not null), or try to assign the value directly.<a name="line.532"></a>
-<span class="sourceLineNo">533</span>               if (! rawTypeMeta.canCreateNewInstance()) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>                  if (propMap == null) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>                     if (setter == null &amp;&amp; field == null)<a name="line.535"></a>
-<span class="sourceLineNo">536</span>                        throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter or public field is defined, and the current value is null", name, propertyClass.getName(), findClassName(value));<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>                     if (propertyClass.isInstance(valueMap)) {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>                        if (! valueType.isObject()) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>                           for (Map.Entry e : (Set&lt;Map.Entry&gt;)valueMap.entrySet()) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>                              Object v = e.getValue();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>                              if (v != null &amp;&amp; ! valueType.getInnerClass().isInstance(v))<a name="line.542"></a>
-<span class="sourceLineNo">543</span>                                 throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because the value types in the assigned map do not match the specified ''elementClass'' attribute on the property, and the property value is currently null", name, propertyClass.getName(), findClassName(value));<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>                        invokeSetter(bean, pName, valueMap);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>                        return r;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>                     }<a name="line.548"></a>
-<span class="sourceLineNo">549</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{2}'' to object of type ''{2}'' because the assigned map cannot be converted to the specified type because the property type is abstract, and the property value is currently null", name, propertyClass.getName(), findClassName(value));<a name="line.549"></a>
-<span class="sourceLineNo">550</span>                  }<a name="line.550"></a>
-<span class="sourceLineNo">551</span>               } else {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>                  if (propMap == null) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>                     propMap = newInstance(Map.class, propertyClass);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>                  } else {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                     propMap.clear();<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><a name="line.558"></a>
-<span class="sourceLineNo">559</span>               // Set the values.<a name="line.559"></a>
-<span class="sourceLineNo">560</span>               for (Map.Entry e : (Set&lt;Map.Entry&gt;)valueMap.entrySet()) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>                  Object k = e.getKey();<a name="line.561"></a>
-<span class="sourceLineNo">562</span>                  Object v = e.getValue();<a name="line.562"></a>
-<span class="sourceLineNo">563</span>                  if (! valueType.isObject())<a name="line.563"></a>
-<span class="sourceLineNo">564</span>                     v = session.convertToType(v, valueType);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>                  propMap.put(k, v);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>               }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>               if (setter != null || field != null)<a name="line.567"></a>
-<span class="sourceLineNo">568</span>                  invokeSetter(bean, pName, propMap);<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>            } else if (isCollection) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>               if (! (value instanceof Collection)) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>                  if (value instanceof CharSequence)<a name="line.573"></a>
-<span class="sourceLineNo">574</span>                     value = new ObjectList((CharSequence)value).setBeanSession(session);<a name="line.574"></a>
-<span class="sourceLineNo">575</span>                  else<a name="line.575"></a>
-<span class="sourceLineNo">576</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}''", name, propertyClass.getName(), findClassName(value));<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>               Collection valueList = (Collection)value;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>               Collection propList = (Collection)r;<a name="line.580"></a>
-<span class="sourceLineNo">581</span>                  ClassMeta elementType = rawTypeMeta.getElementType();<a name="line.581"></a>
-<span class="sourceLineNo">582</span><a name="line.582"></a>
-<span class="sourceLineNo">583</span>               // If the property type is abstract, then we either need to reuse the existing<a name="line.583"></a>
-<span class="sourceLineNo">584</span>               // collection (if it's not null), or try to assign the value directly.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>               if (! rawTypeMeta.canCreateNewInstance()) {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>                  if (propList == null) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>                     if (setter == null &amp;&amp; field == null)<a name="line.587"></a>
-<span class="sourceLineNo">588</span>                        throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter or public field is defined, and the current value is null", name, propertyClass.getName(), findClassName(value));<a name="line.588"></a>
-<span class="sourceLineNo">589</span><a name="line.589"></a>
-<span class="sourceLineNo">590</span>                     if (propertyClass.isInstance(valueList)) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>                        if (! elementType.isObject()) {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>                              List l = new ObjectList(valueList);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>                              for (ListIterator&lt;Object&gt; i = l.listIterator(); i.hasNext(); ) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>                                 Object v = i.next();<a name="line.594"></a>
-<span class="sourceLineNo">595</span>                                 if (v != null &amp;&amp; (! elementType.getInnerClass().isInstance(v))) {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>                                    i.set(session.convertToType(v, elementType));<a name="line.596"></a>
-<span class="sourceLineNo">597</span>                                 }<a name="line.597"></a>
-<span class="sourceLineNo">598</span>                              }<a name="line.598"></a>
-<span class="sourceLineNo">599</span>                              valueList = l;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>                           }<a name="line.600"></a>
-<span class="sourceLineNo">601</span>                        invokeSetter(bean, pName, valueList);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>                        return r;<a name="line.602"></a>
-<span class="sourceLineNo">603</span>                     }<a name="line.603"></a>
-<span class="sourceLineNo">604</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because the assigned map cannot be converted to the specified type because the property type is abstract, and the property value is currently null", name, propertyClass.getName(), findClassName(value));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>                  }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>                  propList.clear();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>               } else {<a name="line.607"></a>
+<span class="sourceLineNo">510</span>         if (m.bean == null) {<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>            // Read-only beans get their properties stored in a cache.<a name="line.512"></a>
+<span class="sourceLineNo">513</span>            if (m.propertyCache != null)<a name="line.513"></a>
+<span class="sourceLineNo">514</span>               return m.propertyCache.put(name, value);<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>            throw new BeanRuntimeException("Non-existent bean instance on bean.");<a name="line.516"></a>
+<span class="sourceLineNo">517</span>         }<a name="line.517"></a>
+<span class="sourceLineNo">518</span><a name="line.518"></a>
+<span class="sourceLineNo">519</span>         boolean isMap = rawTypeMeta.isMap();<a name="line.519"></a>
+<span class="sourceLineNo">520</span>         boolean isCollection = rawTypeMeta.isCollection();<a name="line.520"></a>
+<span class="sourceLineNo">521</span><a name="line.521"></a>
+<span class="sourceLineNo">522</span>         if ((! isDyna) &amp;&amp; field == null &amp;&amp; setter == null &amp;&amp; ! (isMap || isCollection)) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>            if ((value == null &amp;&amp; beanContext.ignoreUnknownNullBeanProperties) || beanContext.ignorePropertiesWithoutSetters)<a name="line.523"></a>
+<span class="sourceLineNo">524</span>               return null;<a name="line.524"></a>
+<span class="sourceLineNo">525</span>            throw new BeanRuntimeException(beanMeta.c, "Setter or public field not defined on property ''{0}''", name);<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>         Object bean = m.getBean(true);  // Don't use getBean() because it triggers array creation!<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>         try {<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span>            Object r = beanContext.beanMapPutReturnsOldValue || isMap || isCollection ? get(m, pName) : null;<a name="line.532"></a>
+<span class="sourceLineNo">533</span>            Class&lt;?&gt; propertyClass = rawTypeMeta.getInnerClass();<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>            if (value == null &amp;&amp; (isMap || isCollection)) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>               invokeSetter(bean, pName, null);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>               return r;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>            }<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span>            if (isMap) {<a name="line.540"></a>
+<span class="sourceLineNo">541</span><a name="line.541"></a>
+<span class="sourceLineNo">542</span>               if (! (value instanceof Map)) {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>                  if (value instanceof CharSequence)<a name="line.543"></a>
+<span class="sourceLineNo">544</span>                     value = new ObjectMap((CharSequence)value).setBeanSession(session);<a name="line.544"></a>
+<span class="sourceLineNo">545</span>                  else<a name="line.545"></a>
+<span class="sourceLineNo">546</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}''", name, propertyClass.getName(), findClassName(value));<a name="line.546"></a>
+<span class="sourceLineNo">547</span>               }<a name="line.547"></a>
+<span class="sourceLineNo">548</span><a name="line.548"></a>
+<span class="sourceLineNo">549</span>               Map valueMap = (Map)value;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>               Map propMap = (Map)r;<a name="line.550"></a>
+<span class="sourceLineNo">551</span>               ClassMeta&lt;?&gt; valueType = rawTypeMeta.getValueType();<a name="line.551"></a>
+<span class="sourceLineNo">552</span><a name="line.552"></a>
+<span class="sourceLineNo">553</span>               // If the property type is abstract, then we either need to reuse the existing<a name="line.553"></a>
+<span class="sourceLineNo">554</span>               // map (if it's not null), or try to assign the value directly.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>               if (! rawTypeMeta.canCreateNewInstance()) {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>                  if (propMap == null) {<a name="line.556"></a>
+<span class="sourceLineNo">557</span>                     if (setter == null &amp;&amp; field == null)<a name="line.557"></a>
+<span class="sourceLineNo">558</span>                        throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter or public field is defined, and the current value is null", name, propertyClass.getName(), findClassName(value));<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span>                     if (propertyClass.isInstance(valueMap)) {<a name="line.560"></a>
+<span class="sourceLineNo">561</span>                        if (! valueType.isObject()) {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>                           for (Map.Entry e : (Set&lt;Map.Entry&gt;)valueMap.entrySet()) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>                              Object v = e.getValue();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>                              if (v != null &amp;&amp; ! valueType.getInnerClass().isInstance(v))<a name="line.564"></a>
+<span class="sourceLineNo">565</span>                                 throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because the value types in the assigned map do not match the specified ''elementClass'' attribute on the property, and the property value is currently null", name, propertyClass.getName(), findClassName(value));<a name="line.565"></a>
+<span class="sourceLineNo">566</span>                           }<a name="line.566"></a>
+<span class="sourceLineNo">567</span>                        }<a name="line.567"></a>
+<span class="sourceLineNo">568</span>                        invokeSetter(bean, pName, valueMap);<a name="line.568"></a>
+<span class="sourceLineNo">569</span>                        return r;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>                     }<a name="line.570"></a>
+<span class="sourceLineNo">571</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{2}'' to object of type ''{2}'' because the assigned map cannot be converted to the specified type because the property type is abstract, and the property value is currently null", name, propertyClass.getName(), findClassName(value));<a name="line.571"></a>
+<span class="sourceLineNo">572</span>                  }<a name="line.572"></a>
+<span class="sourceLineNo">573</span>               } else {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>                  if (propMap == null) {<a name="line.574"></a>
+<span class="sourceLineNo">575</span>                     propMap = newInstance(Map.class, propertyClass);<a name="line.575"></a>
+<span class="sourceLineNo">576</span>                  } else {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>                     propMap.clear();<a name="line.577"></a>
+<span class="sourceLineNo">578</span>                  }<a name="line.578"></a>
+<span class="sourceLineNo">579</span>               }<a name="line.579"></a>
+<span class="sourceLineNo">580</span><a name="line.580"></a>
+<span class="sourceLineNo">581</span>               // Set the values.<a name="line.581"></a>
+<span class="sourceLineNo">582</span>               for (Map.Entry e : (Set&lt;Map.Entry&gt;)valueMap.entrySet()) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>                  Object k = e.getKey();<a name="line.583"></a>
+<span class="sourceLineNo">584</span>                  Object v = e.getValue();<a name="line.584"></a>
+<span class="sourceLineNo">585</span>                  if (! valueType.isObject())<a name="line.585"></a>
+<span class="sourceLineNo">586</span>                     v = session.convertToType(v, valueType);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>                  propMap.put(k, v);<a name="line.587"></a>
+<span class="sourceLineNo">588</span>               }<a name="line.588"></a>
+<span class="sourceLineNo">589</span>               if (setter != null || field != null)<a name="line.589"></a>
+<span class="sourceLineNo">590</span>                  invokeSetter(bean, pName, propMap);<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>            } else if (isCollection) {<a name="line.592"></a>
+<span class="sourceLineNo">593</span><a name="line.593"></a>
+<span class="sourceLineNo">594</span>               if (! (value instanceof Collection)) {<a name="line.594"></a>
+<span class="sourceLineNo">595</span>                  if (value instanceof CharSequence)<a name="line.595"></a>
+<span class="sourceLineNo">596</span>                     value = new ObjectList((CharSequence)value).setBeanSession(session);<a name="line.596"></a>
+<span class="sourceLineNo">597</span>                  else<a name="line.597"></a>
+<span class="sourceLineNo">598</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}''", name, propertyClass.getName(), findClassName(value));<a name="line.598"></a>
+<span class="sourceLineNo">599</span>               }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span>               Collection valueList = (Collection)value;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>               Collection propList = (Collection)r;<a name="line.602"></a>
+<span class="sourceLineNo">603</span>                  ClassMeta elementType = rawTypeMeta.getElementType();<a name="line.603"></a>
+<span class="sourceLineNo">604</span><a name="line.604"></a>
+<span class="sourceLineNo">605</span>               // If the property type is abstract, then we either need to reuse the existing<a name="line.605"></a>
+<span class="sourceLineNo">606</span>               // collection (if it's not null), or try to assign the value directly.<a name="line.606"></a>
+<span class="sourceLineNo">607</span>               if (! rawTypeMeta.canCreateNewInstance()) {<a name="line.607"></a>
 <span class="sourceLineNo">608</span>                  if (propList == null) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>                     propList = newInstance(Collection.class, propertyClass);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>                     invokeSetter(bean, pName, propList);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>                  } else {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>                     propList.clear();<a name="line.612"></a>
-<span class="sourceLineNo">613</span>                  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>               }<a name="line.614"></a>
-<span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>               // Set the values.<a name="line.616"></a>
-<span class="sourceLineNo">617</span>               for (Object v : valueList) {<a name="line.617"></a>
-<span class="sourceLineNo">618</span>                  if (! elementType.isObject())<a name="line.618"></a>
-<span class="sourceLineNo">619</span>                     v = session.convertToType(v, elementType);<a name="line.619"></a>
-<span class="sourceLineNo">620</span>                  propList.add(v);<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>            } else {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>               if (swap != null &amp;&amp; value != null &amp;&amp; isParentClass(swap.getSwapClass(), value.getClass())) {<a name="line.624"></a>
-<span class="sourceLineNo">625</span>                  value = swap.unswap(session, value, rawTypeMeta);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>               } else {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>                  value = session.convertToType(value, rawTypeMeta);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>               }<a name="line.628"></a>
-<span class="sourceLineNo">629</span>               invokeSetter(bean, pName, value);<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>            return r;<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>         } catch (BeanRuntimeException e) {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>            throw e;<a name="line.635"></a>
-<span class="sourceLineNo">636</span>         } catch (Exception e) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>            e.printStackTrace();<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            if (beanContext.ignoreInvocationExceptionsOnSetters) {<a name="line.638"></a>
-<span class="sourceLineNo">639</span>                  if (rawTypeMeta.isPrimitive())<a name="line.639"></a>
-<span class="sourceLineNo">640</span>                     return rawTypeMeta.getPrimitiveDefault();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>               return null;<a name="line.641"></a>
-<span class="sourceLineNo">642</span>            }<a name="line.642"></a>
-<span class="sourceLineNo">643</span>            throw new BeanRuntimeException(beanMeta.c, "Error occurred trying to set property ''{0}''", name).initCause(e);<a name="line.643"></a>
-<span class="sourceLineNo">644</span>         }<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      } catch (ParseException e) {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>         throw new BeanRuntimeException(e);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      }<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   }<a name="line.648"></a>
-<span class="sourceLineNo">649</span><a name="line.649"></a>
-<span class="sourceLineNo">650</span>   private Object invokeGetter(Object bean, String pName) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      if (isDyna) {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>         Map m = null;<a name="line.652"></a>
-<span class="sourceLineNo">653</span>         if (getter != null)<a name="line.653"></a>
-<span class="sourceLineNo">654</span>            m = (Map)getter.invoke(bean);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>         else if (field != null)<a name="line.655"></a>
-<span class="sourceLineNo">656</span>            m = (Map)field.get(bean);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>         else<a name="line.657"></a>
-<span class="sourceLineNo">658</span>            throw new BeanRuntimeException(beanMeta.c, "Getter or public field not defined on property ''{0}''", name);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>         return (m == null ? null : m.get(pName));<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      }<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      if (getter != null)<a name="line.661"></a>
-<span class="sourceLineNo">662</span>         return getter.invoke(bean);<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      if (field != null)<a name="line.663"></a>
-<span class="sourceLineNo">664</span>         return field.get(bean);<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      throw new BeanRuntimeException(beanMeta.c, "Getter or public field not defined on property ''{0}''", name);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   }<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>   private Object invokeSetter(Object bean, String pName, Object val) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      if (isDyna) {<a name="line.669"></a>
-<span class="sourceLineNo">670</span>         if (setter != null)<a name="line.670"></a>
-<span class="sourceLineNo">671</span>            return setter.invoke(bean, pName, val);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>         Map m = null;<a name="line.672"></a>
-<span class="sourceLineNo">673</span>         if (field != null)<a name="line.673"></a>
-<span class="sourceLineNo">674</span>            m = (Map&lt;String,Object&gt;)field.get(bean);<a name="line.674"></a>
-<span class="sourceLineNo">675</span>         else if (getter != null)<a name="line.675"></a>
-<span class="sourceLineNo">676</span>            m = (Map&lt;String,Object&gt;)getter.invoke(bean);<a name="line.676"></a>
-<span class="sourceLineNo">677</span>         else<a name="line.677"></a>
-<span class="sourceLineNo">678</span>            throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter is defined on this property, and the existing property value is null", name, this.getClassMeta().getInnerClass().getName(), findClassName(val));<a name="line.678"></a>
-<span class="sourceLineNo">679</span>         return (m == null ? null : m.put(pName, val));<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      }<a name="line.680"></a>
-<span class="sourceLineNo">681</span>      if (setter != null)<a name="line.681"></a>
-<span class="sourceLineNo">682</span>         return setter.invoke(bean, val);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>      if (field != null) {<a name="line.683"></a>
-<span class="sourceLineNo">684</span>         field.set(bean, val);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>         return null;<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      }<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter is defined on this property, and the existing property value is null", name, this.getClassMeta().getInnerClass().getName(), findClassName(val));<a name="line.687"></a>
+<span class="sourceLineNo">609</span>                     if (setter == null &amp;&amp; field == null)<a name="line.609"></a>
+<span class="sourceLineNo">610</span>                        throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter or public field is defined, and the current value is null", name, propertyClass.getName(), findClassName(value));<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>                     if (propertyClass.isInstance(valueList)) {<a name="line.612"></a>
+<span class="sourceLineNo">613</span>                        if (! elementType.isObject()) {<a name="line.613"></a>
+<span class="sourceLineNo">614</span>                              List l = new ObjectList(valueList);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>                              for (ListIterator&lt;Object&gt; i = l.listIterator(); i.hasNext(); ) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>                                 Object v = i.next();<a name="line.616"></a>
+<span class="sourceLineNo">617</span>                                 if (v != null &amp;&amp; (! elementType.getInnerClass().isInstance(v))) {<a name="line.617"></a>
+<span class="sourceLineNo">618</span>                                    i.set(session.conve

<TRUNCATED>


[11/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.html b/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.html
index 10b970a..f9e091e 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.html
@@ -220,779 +220,801 @@
 <span class="sourceLineNo">212</span>         if (typeMeta == null)<a name="line.212"></a>
 <span class="sourceLineNo">213</span>            typeMeta = rawTypeMeta;<a name="line.213"></a>
 <span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>         System.err.println("swap=" + swap);<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>         return true;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>      /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span>       * @return A new BeanPropertyMeta object using this builder.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>       */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      public BeanPropertyMeta build() {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>         return new BeanPropertyMeta(this);<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>      private static PojoSwap getPropertyPojoSwap(BeanProperty p) throws Exception {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>         if (! p.format().isEmpty())<a name="line.228"></a>
-<span class="sourceLineNo">229</span>            return newInstance(PojoSwap.class, StringFormatSwap.class, p.format());<a name="line.229"></a>
-<span class="sourceLineNo">230</span>         Class&lt;?&gt; c = p.swap();<a name="line.230"></a>
-<span class="sourceLineNo">231</span>         if (c == Null.class)<a name="line.231"></a>
-<span class="sourceLineNo">232</span>            return null;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>         if (isParentClass(PojoSwap.class, c))<a name="line.233"></a>
-<span class="sourceLineNo">234</span>            return newInstance(PojoSwap.class, c);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>         throw new RuntimeException("TODO - Surrogate swaps not yet supported.");<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>      BeanPropertyMeta.Builder setGetter(Method getter) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>         setAccessible(getter);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>         this.getter = getter;<a name="line.240"></a>
-<span class="sourceLineNo">241</span>         return this;<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>      BeanPropertyMeta.Builder setSetter(Method setter) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>         setAccessible(setter);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>         this.setter = setter;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>         return this;<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>      BeanPropertyMeta.Builder setField(Field field) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>         setAccessible(field);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>         this.field = field;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>         return this;<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>      BeanPropertyMeta.Builder setAsConstructorArg() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>         this.isConstructorArg = true;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>         return this;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      }<a name="line.259"></a>
+<span class="sourceLineNo">215</span>         return true;<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>       * @return A new BeanPropertyMeta object using this builder.<a name="line.219"></a>
+<span class="sourceLineNo">220</span>       */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      public BeanPropertyMeta build() {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>         return new BeanPropertyMeta(this);<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>      private static PojoSwap getPropertyPojoSwap(BeanProperty p) throws Exception {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>         if (! p.format().isEmpty())<a name="line.226"></a>
+<span class="sourceLineNo">227</span>            return newInstance(PojoSwap.class, StringFormatSwap.class, p.format());<a name="line.227"></a>
+<span class="sourceLineNo">228</span>         Class&lt;?&gt; c = p.swap();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>         if (c == Null.class)<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            return null;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>         if (isParentClass(PojoSwap.class, c))<a name="line.231"></a>
+<span class="sourceLineNo">232</span>            return newInstance(PojoSwap.class, c);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>         throw new RuntimeException("TODO - Surrogate swaps not yet supported.");<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>      BeanPropertyMeta.Builder setGetter(Method getter) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>         setAccessible(getter);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>         this.getter = getter;<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>      BeanPropertyMeta.Builder setSetter(Method setter) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>         setAccessible(setter);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>         this.setter = setter;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>         return this;<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>      BeanPropertyMeta.Builder setField(Field field) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>         setAccessible(field);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>         this.field = field;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>         return this;<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>      BeanPropertyMeta.Builder setAsConstructorArg() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>         this.isConstructorArg = true;<a name="line.255"></a>
+<span class="sourceLineNo">256</span>         return this;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>   }<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><a name="line.262"></a>
-<span class="sourceLineNo">263</span>   /**<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    * Creates a new BeanPropertyMeta using the contents of the specified builder.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    *<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    * @param b The builder to copy fields from.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   protected BeanPropertyMeta(BeanPropertyMeta.Builder b) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.field = b.field;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      this.getter = b.getter;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.setter = b.setter;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      this.isUri = b.isUri;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      this.beanMeta = b.beanMeta;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      this.beanContext = b.beanContext;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      this.name = b.name;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      this.rawTypeMeta = b.rawTypeMeta;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      this.typeMeta = b.typeMeta;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.properties = b.properties;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.swap = b.swap;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      this.beanRegistry = b.beanRegistry;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      this.overrideValue = b.overrideValue;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      this.delegateFor = b.delegateFor;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      this.extMeta = b.extMeta;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      this.isDyna = b.isDyna;<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>   /**<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    * Returns the name of this bean property.<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    *<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    * @return The name of the bean property.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   public String getName() {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      return name;<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>    * Returns the bean meta that this property belongs to.<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    *<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    * @return The bean meta that this property belongs to.<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    */<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   @BeanIgnore<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   public BeanMeta&lt;?&gt; getBeanMeta() {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      return beanMeta;<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>    * Returns the getter method for this property.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    *<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    * @return The getter method for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no getter method.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   public Method getGetter() {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      return getter;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>   /**<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    * Returns the setter method for this property.<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    *<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    * @return The setter method for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no setter method.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   public Method getSetter() {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      return setter;<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>    * Returns the field for this property.<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    *<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    * @return The field for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no field associated with this bean property.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    */<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   public Field getField() {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      return field;<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>   /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    * Returns the {@link ClassMeta} of the class of this property.<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    * &lt;p&gt;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    * If this property or the property type class has a {@link PojoSwap} associated with it, this<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    *    method returns the transformed class meta.<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    * This matches the class type that is used by the {@link #get(BeanMap,String)} and {@link #set(BeanMap,String,Object)} methods.<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    *<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    * @return The {@link ClassMeta} of the class of this property.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   public ClassMeta&lt;?&gt; getClassMeta() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      return typeMeta;<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>    * Returns the bean dictionary in use for this bean property.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    * The order of lookup for the dictionary is as follows:<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    * &lt;ol&gt;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    *    &lt;li&gt;Dictionary defined via {@link BeanProperty#beanDictionary()}.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    *    &lt;li&gt;Dictionary defined via {@link BeanContext#BEAN_beanDictionary} context property.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    * &lt;/ol&gt;<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    * @return The bean dictionary in use for this bean property.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    */<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   public BeanRegistry getBeanRegistry() {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      return beanRegistry;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>   /**<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if this bean property is a URI.<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    * &lt;p&gt;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    * A bean property can be considered a URI if any of the following are true:<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    * &lt;ul class='spaced-list'&gt;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    *    &lt;li&gt;Property class type is {@link URL} or {@link URI}.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    *    &lt;li&gt;Property class type is annotated with {@link org.apache.juneau.annotation.URI}.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    *    &lt;li&gt;Property getter, setter, or field is annotated with {@link org.apache.juneau.annotation.URI}.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    * &lt;/ul&gt;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    *<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if this bean property is a URI.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   public boolean isUri() {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      return isUri;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>   /**<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if this bean property is named &lt;js&gt;"*"&lt;/js&gt;.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if this bean property is named &lt;js&gt;"*"&lt;/js&gt;.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   public boolean isDyna() {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      return isDyna;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>   }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>   /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    * Returns the override list of properties defined through a {@link BeanProperty#properties()} annotation<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    * on this property.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    * @return The list of override properties, or &lt;jk&gt;null&lt;/jk&gt; if annotation not specified.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    */<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   public String[] getProperties() {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      return properties;<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>   /**<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    * Returns the language-specified extended metadata on this bean property.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    *<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    * @param c The name of the metadata class to create.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    * @return Extended metadata on this bean property.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    */<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   public &lt;M extends BeanPropertyMetaExtended&gt; M getExtendedMeta(Class&lt;M&gt; c) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      if (delegateFor != null)<a name="line.400"></a>
-<span class="sourceLineNo">401</span>         return delegateFor.getExtendedMeta(c);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      return extMeta.get(c, 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>    * Equivalent to calling {@link BeanMap#get(Object)}, but is faster since it avoids looking up the property meta.<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    *<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    * @param m The bean map to get the transformed value from.<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    * @param pName The property name.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    * @return The property value.<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    */<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   public Object get(BeanMap&lt;?&gt; m, String pName) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      try {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>         if (overrideValue != null)<a name="line.414"></a>
-<span class="sourceLineNo">415</span>            return overrideValue;<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>         // Read-only beans have their properties stored in a cache until getBean() is called.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>         Object bean = m.bean;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>         if (bean == null)<a name="line.419"></a>
-<span class="sourceLineNo">420</span>            return m.propertyCache.get(name);<a name="line.420"></a>
+<span class="sourceLineNo">261</span>   /**<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    * Creates a new BeanPropertyMeta using the contents of the specified builder.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    *<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    * @param b The builder to copy fields from.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    */<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   protected BeanPropertyMeta(BeanPropertyMeta.Builder b) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      this.field = b.field;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      this.getter = b.getter;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      this.setter = b.setter;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      this.isUri = b.isUri;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      this.beanMeta = b.beanMeta;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      this.beanContext = b.beanContext;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      this.name = b.name;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this.rawTypeMeta = b.rawTypeMeta;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this.typeMeta = b.typeMeta;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      this.properties = b.properties;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      this.swap = b.swap;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      this.beanRegistry = b.beanRegistry;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      this.overrideValue = b.overrideValue;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      this.delegateFor = b.delegateFor;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.extMeta = b.extMeta;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.isDyna = b.isDyna;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   }<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>    * Returns the name of this bean property.<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    *<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    * @return The name of the bean property.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   public String getName() {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      return name;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>   /**<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    * Returns the bean meta that this property belongs to.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    *<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    * @return The bean meta that this property belongs to.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    */<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   @BeanIgnore<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   public BeanMeta&lt;?&gt; getBeanMeta() {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      return beanMeta;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>   }<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>   /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    * Returns the getter method for this property.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    *<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    * @return The getter method for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no getter method.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    */<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   public Method getGetter() {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return getter;<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>    * Returns the setter method for this property.<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    *<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    * @return The setter method for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no setter method.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    */<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   public Method getSetter() {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      return setter;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>   /**<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    * Returns the field for this property.<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    *<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    * @return The field for this bean property, or &lt;jk&gt;null&lt;/jk&gt; if there is no field associated with this bean property.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    */<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   public Field getField() {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      return field;<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>    * Returns the {@link ClassMeta} of the class of this property.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    * &lt;p&gt;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    * If this property or the property type class has a {@link PojoSwap} associated with it, this<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    *    method returns the transformed class meta.<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    * This matches the class type that is used by the {@link #get(BeanMap,String)} and {@link #set(BeanMap,String,Object)} methods.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    *<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    * @return The {@link ClassMeta} of the class of this property.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    */<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   public ClassMeta&lt;?&gt; getClassMeta() {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      return typeMeta;<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>    * Returns the bean dictionary in use for this bean property.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    * The order of lookup for the dictionary is as follows:<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    * &lt;ol&gt;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    *    &lt;li&gt;Dictionary defined via {@link BeanProperty#beanDictionary()}.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    *    &lt;li&gt;Dictionary defined via {@link BeanContext#BEAN_beanDictionary} context property.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    * &lt;/ol&gt;<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    * @return The bean dictionary in use for this bean property.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    */<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   public BeanRegistry getBeanRegistry() {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      return beanRegistry;<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>    * Returns &lt;jk&gt;true&lt;/jk&gt; if this bean property is a URI.<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    * &lt;p&gt;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    * A bean property can be considered a URI if any of the following are true:<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    * &lt;ul class='spaced-list'&gt;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    *    &lt;li&gt;Property class type is {@link URL} or {@link URI}.<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    *    &lt;li&gt;Property class type is annotated with {@link org.apache.juneau.annotation.URI}.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    *    &lt;li&gt;Property getter, setter, or field is annotated with {@link org.apache.juneau.annotation.URI}.<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    * &lt;/ul&gt;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    *<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if this bean property is a URI.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   public boolean isUri() {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      return isUri;<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>    * Returns &lt;jk&gt;true&lt;/jk&gt; if this bean property is named &lt;js&gt;"*"&lt;/js&gt;.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if this bean property is named &lt;js&gt;"*"&lt;/js&gt;.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   public boolean isDyna() {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      return isDyna;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   }<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>   /**<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    * Returns the override list of properties defined through a {@link BeanProperty#properties()} annotation<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    * on this property.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    *<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    * @return The list of override properties, or &lt;jk&gt;null&lt;/jk&gt; if annotation not specified.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    */<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   public String[] getProperties() {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      return properties;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   }<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>   /**<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    * Returns the language-specified extended metadata on this bean property.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    *<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    * @param c The name of the metadata class to create.<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    * @return Extended metadata on this bean property.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    */<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   public &lt;M extends BeanPropertyMetaExtended&gt; M getExtendedMeta(Class&lt;M&gt; c) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      if (delegateFor != null)<a name="line.398"></a>
+<span class="sourceLineNo">399</span>         return delegateFor.getExtendedMeta(c);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      return extMeta.get(c, this);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>   /**<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    * Equivalent to calling {@link BeanMap#get(Object)}, but is faster since it avoids looking up the property meta.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    *<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    * @param m The bean map to get the transformed value from.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    * @param pName The property name.<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    * @return The property value.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    */<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   public Object get(BeanMap&lt;?&gt; m, String pName) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      try {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>         if (overrideValue != null)<a name="line.412"></a>
+<span class="sourceLineNo">413</span>            return overrideValue;<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>         // Read-only beans have their properties stored in a cache until getBean() is called.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>         Object bean = m.bean;<a name="line.416"></a>
+<span class="sourceLineNo">417</span>         if (bean == null)<a name="line.417"></a>
+<span class="sourceLineNo">418</span>            return m.propertyCache.get(name);<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>         return toSerializedForm(m.getBeanSession(), getRaw(m, pName));<a name="line.420"></a>
 <span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>         Object o = invokeGetter(bean, pName);<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>         return toSerializedForm(m.getBeanSession(), o);<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>      } catch (Throwable e) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>         if (beanContext.ignoreInvocationExceptionsOnGetters) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>            if (rawTypeMeta.isPrimitive())<a name="line.428"></a>
-<span class="sourceLineNo">429</span>               return rawTypeMeta.getPrimitiveDefault();<a name="line.429"></a>
-<span class="sourceLineNo">430</span>            return null;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>         }<a name="line.431"></a>
-<span class="sourceLineNo">432</span>         throw new BeanRuntimeException(beanMeta.c, "Exception occurred while getting property ''{0}''", name).initCause(e);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   }<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>   /**<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    * Converts a raw bean property value to serialized form.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    * Applies transforms and child property filters.<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    */<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   final Object toSerializedForm(BeanSession session, Object o) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      try {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>         o = transform(session, o);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>         if (o == null)<a name="line.443"></a>
-<span class="sourceLineNo">444</span>            return null;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>         if (properties != null) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>            if (rawTypeMeta.isArray()) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>               Object[] a = (Object[])o;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>               List l = new DelegateList(rawTypeMeta);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>               ClassMeta childType = rawTypeMeta.getElementType();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>               for (Object c : a)<a name="line.450"></a>
-<span class="sourceLineNo">451</span>                  l.add(applyChildPropertiesFilter(session, childType, c));<a name="line.451"></a>
-<span class="sourceLineNo">452</span>               return l;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>            } else if (rawTypeMeta.isCollection()) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>               Collection c = (Collection)o;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>               List l = new ArrayList(c.size());<a name="line.455"></a>
-<span class="sourceLineNo">456</span>               ClassMeta childType = rawTypeMeta.getElementType();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>               for (Object cc : c)<a name="line.457"></a>
-<span class="sourceLineNo">458</span>                  l.add(applyChildPropertiesFilter(session, childType, cc));<a name="line.458"></a>
-<span class="sourceLineNo">459</span>               return l;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>            } else {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>               return applyChildPropertiesFilter(session, rawTypeMeta, o);<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>         return o;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      } catch (SerializeException e) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>         throw new BeanRuntimeException(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>   /**<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    * Equivalent to calling {@link BeanMap#put(String, Object)}, but is faster since it avoids<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    *    looking up the property meta.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    *<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    * @param m The bean map to set the property value on.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    * @param pName The property name.<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    * @param value The value to set.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    * @return The previous property value.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    * @throws BeanRuntimeException If property could not be set.<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    */<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   public Object set(BeanMap&lt;?&gt; m, String pName, Object value) throws BeanRuntimeException {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      try {<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span>         BeanSession session = m.getBeanSession();<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>         // Comvert to raw form.<a name="line.485"></a>
-<span class="sourceLineNo">486</span>         value = unswap(session, value);<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>         if (m.bean == null) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>            // Read-only beans get their properties stored in a cache.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>            if (m.propertyCache != null)<a name="line.491"></a>
-<span class="sourceLineNo">492</span>               return m.propertyCache.put(name, value);<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>            throw new BeanRuntimeException("Non-existent bean instance on bean.");<a name="line.494"></a>
-<span class="sourceLineNo">495</span>         }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>         boolean isMap = rawTypeMeta.isMap();<a name="line.497"></a>
-<span class="sourceLineNo">498</span>         boolean isCollection = rawTypeMeta.isCollection();<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>         if ((! isDyna) &amp;&amp; field == null &amp;&amp; setter == null &amp;&amp; ! (isMap || isCollection)) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>            if ((value == null &amp;&amp; beanContext.ignoreUnknownNullBeanProperties) || beanContext.ignorePropertiesWithoutSetters)<a name="line.501"></a>
-<span class="sourceLineNo">502</span>               return null;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>            throw new BeanRuntimeException(beanMeta.c, "Setter or public field not defined on property ''{0}''", 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>         Object bean = m.getBean(true);  // Don't use getBean() because it triggers array creation!<a name="line.506"></a>
-<span class="sourceLineNo">507</span><a name="line.507"></a>
-<span class="sourceLineNo">508</span>         try {<a name="line.508"></a>
+<span class="sourceLineNo">422</span>      } catch (Throwable e) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>         if (beanContext.ignoreInvocationExceptionsOnGetters) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>            if (rawTypeMeta.isPrimitive())<a name="line.424"></a>
+<span class="sourceLineNo">425</span>               return rawTypeMeta.getPrimitiveDefault();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>            return null;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>         }<a name="line.427"></a>
+<span class="sourceLineNo">428</span>         throw new BeanRuntimeException(beanMeta.c, "Exception occurred while getting property ''{0}''", name).initCause(e);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>   /**<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    * Equivalent to calling {@link BeanMap#getRaw(Object)}, but is faster since it avoids looking up the property meta.<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    *<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    * @param m The bean map to get the transformed value from.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    * @param pName The property name.<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    * @return The raw property value.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   public Object getRaw(BeanMap&lt;?&gt; m, String pName) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      try {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>         // Read-only beans have their properties stored in a cache until getBean() is called.<a name="line.441"></a>
+<span class="sourceLineNo">442</span>         Object bean = m.bean;<a name="line.442"></a>
+<span class="sourceLineNo">443</span>         if (bean == null)<a name="line.443"></a>
+<span class="sourceLineNo">444</span>            return m.propertyCache.get(name);<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>         return invokeGetter(bean, pName);<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>      } catch (Throwable e) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>         if (beanContext.ignoreInvocationExceptionsOnGetters) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>            if (rawTypeMeta.isPrimitive())<a name="line.450"></a>
+<span class="sourceLineNo">451</span>               return rawTypeMeta.getPrimitiveDefault();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>            return null;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>         }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>         throw new BeanRuntimeException(beanMeta.c, "Exception occurred while getting property ''{0}''", name).initCause(e);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>   /**<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    * Converts a raw bean property value to serialized form.<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    * Applies transforms and child property filters.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>   final Object toSerializedForm(BeanSession session, Object o) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      try {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>         o = transform(session, o);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>         if (o == null)<a name="line.465"></a>
+<span class="sourceLineNo">466</span>            return null;<a name="line.466"></a>
+<span class="sourceLineNo">467</span>         if (properties != null) {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>            if (rawTypeMeta.isArray()) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>               Object[] a = (Object[])o;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>               List l = new DelegateList(rawTypeMeta);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>               ClassMeta childType = rawTypeMeta.getElementType();<a name="line.471"></a>
+<span class="sourceLineNo">472</span>               for (Object c : a)<a name="line.472"></a>
+<span class="sourceLineNo">473</span>                  l.add(applyChildPropertiesFilter(session, childType, c));<a name="line.473"></a>
+<span class="sourceLineNo">474</span>               return l;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>            } else if (rawTypeMeta.isCollection()) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>               Collection c = (Collection)o;<a name="line.476"></a>
+<span class="sourceLineNo">477</span>               List l = new ArrayList(c.size());<a name="line.477"></a>
+<span class="sourceLineNo">478</span>               ClassMeta childType = rawTypeMeta.getElementType();<a name="line.478"></a>
+<span class="sourceLineNo">479</span>               for (Object cc : c)<a name="line.479"></a>
+<span class="sourceLineNo">480</span>                  l.add(applyChildPropertiesFilter(session, childType, cc));<a name="line.480"></a>
+<span class="sourceLineNo">481</span>               return l;<a name="line.481"></a>
+<span class="sourceLineNo">482</span>            } else {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>               return applyChildPropertiesFilter(session, rawTypeMeta, o);<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>         return o;<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      } catch (SerializeException e) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>         throw new BeanRuntimeException(e);<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      }<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>    * Equivalent to calling {@link BeanMap#put(String, Object)}, but is faster since it avoids<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    *    looking up the property meta.<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    *<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    * @param m The bean map to set the property value on.<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    * @param pName The property name.<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    * @param value The value to set.<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    * @return The previous property value.<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    * @throws BeanRuntimeException If property could not be set.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    */<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   public Object set(BeanMap&lt;?&gt; m, String pName, Object value) throws BeanRuntimeException {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      try {<a name="line.503"></a>
+<span class="sourceLineNo">504</span><a name="line.504"></a>
+<span class="sourceLineNo">505</span>         BeanSession session = m.getBeanSession();<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>         // Comvert to raw form.<a name="line.507"></a>
+<span class="sourceLineNo">508</span>         value = unswap(session, value);<a name="line.508"></a>
 <span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>            Object r = beanContext.beanMapPutReturnsOldValue || isMap || isCollection ? get(m, pName) : null;<a name="line.510"></a>
-<span class="sourceLineNo">511</span>            Class&lt;?&gt; propertyClass = rawTypeMeta.getInnerClass();<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span>            if (value == null &amp;&amp; (isMap || isCollection)) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>               invokeSetter(bean, pName, null);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>               return r;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>            }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>            if (isMap) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>               if (! (value instanceof Map)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>                  if (value instanceof CharSequence)<a name="line.521"></a>
-<span class="sourceLineNo">522</span>                     value = new ObjectMap((CharSequence)value).setBeanSession(session);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>                  else<a name="line.523"></a>
-<span class="sourceLineNo">524</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}''", name, propertyClass.getName(), findClassName(value));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>               }<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>               Map valueMap = (Map)value;<a name="line.527"></a>
-<span class="sourceLineNo">528</span>               Map propMap = (Map)r;<a name="line.528"></a>
-<span class="sourceLineNo">529</span>               ClassMeta&lt;?&gt; valueType = rawTypeMeta.getValueType();<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>               // If the property type is abstract, then we either need to reuse the existing<a name="line.531"></a>
-<span class="sourceLineNo">532</span>               // map (if it's not null), or try to assign the value directly.<a name="line.532"></a>
-<span class="sourceLineNo">533</span>               if (! rawTypeMeta.canCreateNewInstance()) {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>                  if (propMap == null) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>                     if (setter == null &amp;&amp; field == null)<a name="line.535"></a>
-<span class="sourceLineNo">536</span>                        throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter or public field is defined, and the current value is null", name, propertyClass.getName(), findClassName(value));<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>                     if (propertyClass.isInstance(valueMap)) {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>                        if (! valueType.isObject()) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>                           for (Map.Entry e : (Set&lt;Map.Entry&gt;)valueMap.entrySet()) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>                              Object v = e.getValue();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>                              if (v != null &amp;&amp; ! valueType.getInnerClass().isInstance(v))<a name="line.542"></a>
-<span class="sourceLineNo">543</span>                                 throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because the value types in the assigned map do not match the specified ''elementClass'' attribute on the property, and the property value is currently null", name, propertyClass.getName(), findClassName(value));<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>                        invokeSetter(bean, pName, valueMap);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>                        return r;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>                     }<a name="line.548"></a>
-<span class="sourceLineNo">549</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{2}'' to object of type ''{2}'' because the assigned map cannot be converted to the specified type because the property type is abstract, and the property value is currently null", name, propertyClass.getName(), findClassName(value));<a name="line.549"></a>
-<span class="sourceLineNo">550</span>                  }<a name="line.550"></a>
-<span class="sourceLineNo">551</span>               } else {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>                  if (propMap == null) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>                     propMap = newInstance(Map.class, propertyClass);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>                  } else {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>                     propMap.clear();<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><a name="line.558"></a>
-<span class="sourceLineNo">559</span>               // Set the values.<a name="line.559"></a>
-<span class="sourceLineNo">560</span>               for (Map.Entry e : (Set&lt;Map.Entry&gt;)valueMap.entrySet()) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>                  Object k = e.getKey();<a name="line.561"></a>
-<span class="sourceLineNo">562</span>                  Object v = e.getValue();<a name="line.562"></a>
-<span class="sourceLineNo">563</span>                  if (! valueType.isObject())<a name="line.563"></a>
-<span class="sourceLineNo">564</span>                     v = session.convertToType(v, valueType);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>                  propMap.put(k, v);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>               }<a name="line.566"></a>
-<span class="sourceLineNo">567</span>               if (setter != null || field != null)<a name="line.567"></a>
-<span class="sourceLineNo">568</span>                  invokeSetter(bean, pName, propMap);<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>            } else if (isCollection) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>               if (! (value instanceof Collection)) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>                  if (value instanceof CharSequence)<a name="line.573"></a>
-<span class="sourceLineNo">574</span>                     value = new ObjectList((CharSequence)value).setBeanSession(session);<a name="line.574"></a>
-<span class="sourceLineNo">575</span>                  else<a name="line.575"></a>
-<span class="sourceLineNo">576</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}''", name, propertyClass.getName(), findClassName(value));<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>               Collection valueList = (Collection)value;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>               Collection propList = (Collection)r;<a name="line.580"></a>
-<span class="sourceLineNo">581</span>                  ClassMeta elementType = rawTypeMeta.getElementType();<a name="line.581"></a>
-<span class="sourceLineNo">582</span><a name="line.582"></a>
-<span class="sourceLineNo">583</span>               // If the property type is abstract, then we either need to reuse the existing<a name="line.583"></a>
-<span class="sourceLineNo">584</span>               // collection (if it's not null), or try to assign the value directly.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>               if (! rawTypeMeta.canCreateNewInstance()) {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>                  if (propList == null) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>                     if (setter == null &amp;&amp; field == null)<a name="line.587"></a>
-<span class="sourceLineNo">588</span>                        throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter or public field is defined, and the current value is null", name, propertyClass.getName(), findClassName(value));<a name="line.588"></a>
-<span class="sourceLineNo">589</span><a name="line.589"></a>
-<span class="sourceLineNo">590</span>                     if (propertyClass.isInstance(valueList)) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>                        if (! elementType.isObject()) {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>                              List l = new ObjectList(valueList);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>                              for (ListIterator&lt;Object&gt; i = l.listIterator(); i.hasNext(); ) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>                                 Object v = i.next();<a name="line.594"></a>
-<span class="sourceLineNo">595</span>                                 if (v != null &amp;&amp; (! elementType.getInnerClass().isInstance(v))) {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>                                    i.set(session.convertToType(v, elementType));<a name="line.596"></a>
-<span class="sourceLineNo">597</span>                                 }<a name="line.597"></a>
-<span class="sourceLineNo">598</span>                              }<a name="line.598"></a>
-<span class="sourceLineNo">599</span>                              valueList = l;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>                           }<a name="line.600"></a>
-<span class="sourceLineNo">601</span>                        invokeSetter(bean, pName, valueList);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>                        return r;<a name="line.602"></a>
-<span class="sourceLineNo">603</span>                     }<a name="line.603"></a>
-<span class="sourceLineNo">604</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because the assigned map cannot be converted to the specified type because the property type is abstract, and the property value is currently null", name, propertyClass.getName(), findClassName(value));<a name="line.604"></a>
-<span class="sourceLineNo">605</span>                  }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>                  propList.clear();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>               } else {<a name="line.607"></a>
+<span class="sourceLineNo">510</span>         if (m.bean == null) {<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>            // Read-only beans get their properties stored in a cache.<a name="line.512"></a>
+<span class="sourceLineNo">513</span>            if (m.propertyCache != null)<a name="line.513"></a>
+<span class="sourceLineNo">514</span>               return m.propertyCache.put(name, value);<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>            throw new BeanRuntimeException("Non-existent bean instance on bean.");<a name="line.516"></a>
+<span class="sourceLineNo">517</span>         }<a name="line.517"></a>
+<span class="sourceLineNo">518</span><a name="line.518"></a>
+<span class="sourceLineNo">519</span>         boolean isMap = rawTypeMeta.isMap();<a name="line.519"></a>
+<span class="sourceLineNo">520</span>         boolean isCollection = rawTypeMeta.isCollection();<a name="line.520"></a>
+<span class="sourceLineNo">521</span><a name="line.521"></a>
+<span class="sourceLineNo">522</span>         if ((! isDyna) &amp;&amp; field == null &amp;&amp; setter == null &amp;&amp; ! (isMap || isCollection)) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>            if ((value == null &amp;&amp; beanContext.ignoreUnknownNullBeanProperties) || beanContext.ignorePropertiesWithoutSetters)<a name="line.523"></a>
+<span class="sourceLineNo">524</span>               return null;<a name="line.524"></a>
+<span class="sourceLineNo">525</span>            throw new BeanRuntimeException(beanMeta.c, "Setter or public field not defined on property ''{0}''", name);<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>         Object bean = m.getBean(true);  // Don't use getBean() because it triggers array creation!<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>         try {<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span>            Object r = beanContext.beanMapPutReturnsOldValue || isMap || isCollection ? get(m, pName) : null;<a name="line.532"></a>
+<span class="sourceLineNo">533</span>            Class&lt;?&gt; propertyClass = rawTypeMeta.getInnerClass();<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>            if (value == null &amp;&amp; (isMap || isCollection)) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>               invokeSetter(bean, pName, null);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>               return r;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>            }<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span>            if (isMap) {<a name="line.540"></a>
+<span class="sourceLineNo">541</span><a name="line.541"></a>
+<span class="sourceLineNo">542</span>               if (! (value instanceof Map)) {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>                  if (value instanceof CharSequence)<a name="line.543"></a>
+<span class="sourceLineNo">544</span>                     value = new ObjectMap((CharSequence)value).setBeanSession(session);<a name="line.544"></a>
+<span class="sourceLineNo">545</span>                  else<a name="line.545"></a>
+<span class="sourceLineNo">546</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}''", name, propertyClass.getName(), findClassName(value));<a name="line.546"></a>
+<span class="sourceLineNo">547</span>               }<a name="line.547"></a>
+<span class="sourceLineNo">548</span><a name="line.548"></a>
+<span class="sourceLineNo">549</span>               Map valueMap = (Map)value;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>               Map propMap = (Map)r;<a name="line.550"></a>
+<span class="sourceLineNo">551</span>               ClassMeta&lt;?&gt; valueType = rawTypeMeta.getValueType();<a name="line.551"></a>
+<span class="sourceLineNo">552</span><a name="line.552"></a>
+<span class="sourceLineNo">553</span>               // If the property type is abstract, then we either need to reuse the existing<a name="line.553"></a>
+<span class="sourceLineNo">554</span>               // map (if it's not null), or try to assign the value directly.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>               if (! rawTypeMeta.canCreateNewInstance()) {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>                  if (propMap == null) {<a name="line.556"></a>
+<span class="sourceLineNo">557</span>                     if (setter == null &amp;&amp; field == null)<a name="line.557"></a>
+<span class="sourceLineNo">558</span>                        throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter or public field is defined, and the current value is null", name, propertyClass.getName(), findClassName(value));<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span>                     if (propertyClass.isInstance(valueMap)) {<a name="line.560"></a>
+<span class="sourceLineNo">561</span>                        if (! valueType.isObject()) {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>                           for (Map.Entry e : (Set&lt;Map.Entry&gt;)valueMap.entrySet()) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>                              Object v = e.getValue();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>                              if (v != null &amp;&amp; ! valueType.getInnerClass().isInstance(v))<a name="line.564"></a>
+<span class="sourceLineNo">565</span>                                 throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because the value types in the assigned map do not match the specified ''elementClass'' attribute on the property, and the property value is currently null", name, propertyClass.getName(), findClassName(value));<a name="line.565"></a>
+<span class="sourceLineNo">566</span>                           }<a name="line.566"></a>
+<span class="sourceLineNo">567</span>                        }<a name="line.567"></a>
+<span class="sourceLineNo">568</span>                        invokeSetter(bean, pName, valueMap);<a name="line.568"></a>
+<span class="sourceLineNo">569</span>                        return r;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>                     }<a name="line.570"></a>
+<span class="sourceLineNo">571</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{2}'' to object of type ''{2}'' because the assigned map cannot be converted to the specified type because the property type is abstract, and the property value is currently null", name, propertyClass.getName(), findClassName(value));<a name="line.571"></a>
+<span class="sourceLineNo">572</span>                  }<a name="line.572"></a>
+<span class="sourceLineNo">573</span>               } else {<a name="line.573"></a>
+<span class="sourceLineNo">574</span>                  if (propMap == null) {<a name="line.574"></a>
+<span class="sourceLineNo">575</span>                     propMap = newInstance(Map.class, propertyClass);<a name="line.575"></a>
+<span class="sourceLineNo">576</span>                  } else {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>                     propMap.clear();<a name="line.577"></a>
+<span class="sourceLineNo">578</span>                  }<a name="line.578"></a>
+<span class="sourceLineNo">579</span>               }<a name="line.579"></a>
+<span class="sourceLineNo">580</span><a name="line.580"></a>
+<span class="sourceLineNo">581</span>               // Set the values.<a name="line.581"></a>
+<span class="sourceLineNo">582</span>               for (Map.Entry e : (Set&lt;Map.Entry&gt;)valueMap.entrySet()) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>                  Object k = e.getKey();<a name="line.583"></a>
+<span class="sourceLineNo">584</span>                  Object v = e.getValue();<a name="line.584"></a>
+<span class="sourceLineNo">585</span>                  if (! valueType.isObject())<a name="line.585"></a>
+<span class="sourceLineNo">586</span>                     v = session.convertToType(v, valueType);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>                  propMap.put(k, v);<a name="line.587"></a>
+<span class="sourceLineNo">588</span>               }<a name="line.588"></a>
+<span class="sourceLineNo">589</span>               if (setter != null || field != null)<a name="line.589"></a>
+<span class="sourceLineNo">590</span>                  invokeSetter(bean, pName, propMap);<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>            } else if (isCollection) {<a name="line.592"></a>
+<span class="sourceLineNo">593</span><a name="line.593"></a>
+<span class="sourceLineNo">594</span>               if (! (value instanceof Collection)) {<a name="line.594"></a>
+<span class="sourceLineNo">595</span>                  if (value instanceof CharSequence)<a name="line.595"></a>
+<span class="sourceLineNo">596</span>                     value = new ObjectList((CharSequence)value).setBeanSession(session);<a name="line.596"></a>
+<span class="sourceLineNo">597</span>                  else<a name="line.597"></a>
+<span class="sourceLineNo">598</span>                     throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}''", name, propertyClass.getName(), findClassName(value));<a name="line.598"></a>
+<span class="sourceLineNo">599</span>               }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span>               Collection valueList = (Collection)value;<a name="line.601"></a>
+<span class="sourceLineNo">602</span>               Collection propList = (Collection)r;<a name="line.602"></a>
+<span class="sourceLineNo">603</span>                  ClassMeta elementType = rawTypeMeta.getElementType();<a name="line.603"></a>
+<span class="sourceLineNo">604</span><a name="line.604"></a>
+<span class="sourceLineNo">605</span>               // If the property type is abstract, then we either need to reuse the existing<a name="line.605"></a>
+<span class="sourceLineNo">606</span>               // collection (if it's not null), or try to assign the value directly.<a name="line.606"></a>
+<span class="sourceLineNo">607</span>               if (! rawTypeMeta.canCreateNewInstance()) {<a name="line.607"></a>
 <span class="sourceLineNo">608</span>                  if (propList == null) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>                     propList = newInstance(Collection.class, propertyClass);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>                     invokeSetter(bean, pName, propList);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>                  } else {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>                     propList.clear();<a name="line.612"></a>
-<span class="sourceLineNo">613</span>                  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>               }<a name="line.614"></a>
-<span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>               // Set the values.<a name="line.616"></a>
-<span class="sourceLineNo">617</span>               for (Object v : valueList) {<a name="line.617"></a>
-<span class="sourceLineNo">618</span>                  if (! elementType.isObject())<a name="line.618"></a>
-<span class="sourceLineNo">619</span>                     v = session.convertToType(v, elementType);<a name="line.619"></a>
-<span class="sourceLineNo">620</span>                  propList.add(v);<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>            } else {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>               if (swap != null &amp;&amp; value != null &amp;&amp; isParentClass(swap.getSwapClass(), value.getClass())) {<a name="line.624"></a>
-<span class="sourceLineNo">625</span>                  value = swap.unswap(session, value, rawTypeMeta);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>               } else {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>                  value = session.convertToType(value, rawTypeMeta);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>               }<a name="line.628"></a>
-<span class="sourceLineNo">629</span>               invokeSetter(bean, pName, value);<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>            return r;<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>         } catch (BeanRuntimeException e) {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>            throw e;<a name="line.635"></a>
-<span class="sourceLineNo">636</span>         } catch (Exception e) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>            e.printStackTrace();<a name="line.637"></a>
-<span class="sourceLineNo">638</span>            if (beanContext.ignoreInvocationExceptionsOnSetters) {<a name="line.638"></a>
-<span class="sourceLineNo">639</span>                  if (rawTypeMeta.isPrimitive())<a name="line.639"></a>
-<span class="sourceLineNo">640</span>                     return rawTypeMeta.getPrimitiveDefault();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>               return null;<a name="line.641"></a>
-<span class="sourceLineNo">642</span>            }<a name="line.642"></a>
-<span class="sourceLineNo">643</span>            throw new BeanRuntimeException(beanMeta.c, "Error occurred trying to set property ''{0}''", name).initCause(e);<a name="line.643"></a>
-<span class="sourceLineNo">644</span>         }<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      } catch (ParseException e) {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>         throw new BeanRuntimeException(e);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      }<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   }<a name="line.648"></a>
-<span class="sourceLineNo">649</span><a name="line.649"></a>
-<span class="sourceLineNo">650</span>   private Object invokeGetter(Object bean, String pName) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      if (isDyna) {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>         Map m = null;<a name="line.652"></a>
-<span class="sourceLineNo">653</span>         if (getter != null)<a name="line.653"></a>
-<span class="sourceLineNo">654</span>            m = (Map)getter.invoke(bean);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>         else if (field != null)<a name="line.655"></a>
-<span class="sourceLineNo">656</span>            m = (Map)field.get(bean);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>         else<a name="line.657"></a>
-<span class="sourceLineNo">658</span>            throw new BeanRuntimeException(beanMeta.c, "Getter or public field not defined on property ''{0}''", name);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>         return (m == null ? null : m.get(pName));<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      }<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      if (getter != null)<a name="line.661"></a>
-<span class="sourceLineNo">662</span>         return getter.invoke(bean);<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      if (field != null)<a name="line.663"></a>
-<span class="sourceLineNo">664</span>         return field.get(bean);<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      throw new BeanRuntimeException(beanMeta.c, "Getter or public field not defined on property ''{0}''", name);<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   }<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>   private Object invokeSetter(Object bean, String pName, Object val) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      if (isDyna) {<a name="line.669"></a>
-<span class="sourceLineNo">670</span>         if (setter != null)<a name="line.670"></a>
-<span class="sourceLineNo">671</span>            return setter.invoke(bean, pName, val);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>         Map m = null;<a name="line.672"></a>
-<span class="sourceLineNo">673</span>         if (field != null)<a name="line.673"></a>
-<span class="sourceLineNo">674</span>            m = (Map&lt;String,Object&gt;)field.get(bean);<a name="line.674"></a>
-<span class="sourceLineNo">675</span>         else if (getter != null)<a name="line.675"></a>
-<span class="sourceLineNo">676</span>            m = (Map&lt;String,Object&gt;)getter.invoke(bean);<a name="line.676"></a>
-<span class="sourceLineNo">677</span>         else<a name="line.677"></a>
-<span class="sourceLineNo">678</span>            throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter is defined on this property, and the existing property value is null", name, this.getClassMeta().getInnerClass().getName(), findClassName(val));<a name="line.678"></a>
-<span class="sourceLineNo">679</span>         return (m == null ? null : m.put(pName, val));<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      }<a name="line.680"></a>
-<span class="sourceLineNo">681</span>      if (setter != null)<a name="line.681"></a>
-<span class="sourceLineNo">682</span>         return setter.invoke(bean, val);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>      if (field != null) {<a name="line.683"></a>
-<span class="sourceLineNo">684</span>         field.set(bean, val);<a name="line.684"></a>
-<span class="sourceLineNo">685</span>         return null;<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      }<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter is defined on this property, and the existing property value is null", name, this.getClassMeta().getInnerClass().getName(), findClassName(val));<a name="line.687"></a>
+<span class="sourceLineNo">609</span>                     if (setter == null &amp;&amp; field == null)<a name="line.609"></a>
+<span class="sourceLineNo">610</span>                        throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}'' because no setter or public field is defined, and the current value is null", name, propertyClass.getName(), findClassName(value));<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>                     if (propertyClass.isInstance(valueList)) {<a name="line.612"></a>
+<span class="sourceLineNo">613</span>                        if (! elementType.isObject()) {<a name="line.613"></a>
+<span class="sourceLineNo">614</span>                              List l = new ObjectList(valueList);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>                              for (ListIterator&lt;Object&gt; i = l.listIterator(); i.hasNext(); ) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>                                 Object v = i.next();<a name="line.616"></a>
+<span class="sourceLineNo">617</span>                                 if (v != null &amp;&amp; (! elementType.getInnerClass().isInstance(v))) {<a name="line.617"></a>
+<span class="sourceLineNo">618</span>                                    i.set(session.convertToType(v, elementType));<a name="line.

<TRUNCATED>


[09/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/ObjectMap.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/ObjectMap.html b/content/site/apidocs/src-html/org/apache/juneau/ObjectMap.html
index c77defa..2f604a3 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/ObjectMap.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/ObjectMap.html
@@ -158,1164 +158,1168 @@
 <span class="sourceLineNo">150</span>      this(p == null ? BeanContext.DEFAULT.createSession() : p.getBeanContext().createSession());<a name="line.150"></a>
 <span class="sourceLineNo">151</span>      if (p == null)<a name="line.151"></a>
 <span class="sourceLineNo">152</span>         p = JsonParser.DEFAULT;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      if (! StringUtils.isEmpty(s))<a name="line.153"></a>
-<span class="sourceLineNo">154</span>         p.parseIntoMap(s, this, session.string(), session.object());<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   }<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>   /**<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    * Shortcut for &lt;code&gt;&lt;jk&gt;new&lt;/jk&gt; ObjectMap(string,JsonParser.&lt;jsf&gt;DEFAULT&lt;/jsf&gt;);&lt;/code&gt;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    *<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    * @param s The JSON text to parse.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    */<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   public ObjectMap(CharSequence s) throws ParseException {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      this(s, null);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>   /**<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    * Construct an ObjectMap directly from a reader using the specified parser.<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    *<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    * @param r The reader to read from.  The reader will be wrapped in a {@link BufferedReader} if it isn't already.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    * @param p The parser to use to parse the input.<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    * @throws IOException If a problem occurred trying to read from the reader.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    */<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   public ObjectMap(Reader r, Parser p) throws ParseException, IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      this(p == null ? BeanContext.DEFAULT.createSession() : p.getBeanContext().createSession());<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      parseReader(r, p);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>   }<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>   /**<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    * Shortcut for &lt;code&gt;&lt;jk&gt;new&lt;/jk&gt; ObjectMap(reader, JsonParser.&lt;jsf&gt;DEFAULT&lt;/jsf&gt;)&lt;/code&gt;.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    *<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    * @param r The reader to read from.  The reader will be wrapped in a {@link BufferedReader} if it isn't already.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    * @throws IOException If a problem occurred trying to read from the reader.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    */<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   public ObjectMap(Reader r) throws ParseException, IOException {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      this(BeanContext.DEFAULT.createSession());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      parseReader(r, JsonParser.DEFAULT);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   }<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>   private void parseReader(Reader r, Parser p) throws ParseException {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      if (p == null)<a name="line.193"></a>
-<span class="sourceLineNo">194</span>         p = JsonParser.DEFAULT;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      p.parseIntoMap(r, this, session.string(), session.object());<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>   /**<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    * Construct an empty JSON object (i.e. an empty {@link LinkedHashMap}).<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    */<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   public ObjectMap() {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      this(BeanContext.DEFAULT.createSession());<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>   /**<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    * Construct an empty JSON object (i.e. an empty {@link LinkedHashMap}) with the specified bean context.<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    *<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    * @param session The bean session to use for creating beans.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   public ObjectMap(BeanSession session) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      this.session = session;<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>   /**<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    * Construct a JSON object and fill it with the contents from the specified {@link Map}.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    *<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    * @param m The map whose entries will be copied into this map.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   public ObjectMap(Map&lt;?,?&gt; m) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      super();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      for (Map.Entry&lt;?,?&gt; e : m.entrySet())<a name="line.221"></a>
-<span class="sourceLineNo">222</span>         put(e.getKey().toString(), e.getValue());<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>    * Set an inner map in this map to allow for chained get calls.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    * &lt;p&gt;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    * If {@link #get(Object)} returns &lt;jk&gt;null&lt;/jk&gt;, then {@link #get(Object)} will be called on the inner map.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    * &lt;p&gt;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    * In addition to providing the ability to chain maps, this method also provides the ability<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    * to wrap an existing map inside another map so that you can add entries to the outer<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    * map without affecting the values on the inner map.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    * &lt;p class='bcode'&gt;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    *    ObjectMap m1 = &lt;jk&gt;new&lt;/jk&gt; ObjectMap(&lt;js&gt;"{foo:1}"&lt;/js&gt;);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    *    ObjectMap m2 = &lt;jk&gt;new&lt;/jk&gt; ObjectMap().setInner(m1);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    *    m2.put(&lt;js&gt;"foo"&lt;/js&gt;, 2);                      &lt;jc&gt;// Overwrite the entry&lt;/jc&gt;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    *    &lt;jk&gt;int&lt;/jk&gt; foo1 = m1.getInt(&lt;js&gt;"foo"&lt;/js&gt;);           &lt;jc&gt;// foo1 == 1 &lt;/jc&gt;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    *    &lt;jk&gt;int&lt;/jk&gt; foo2 = m2.getInt(&lt;js&gt;"foo"&lt;/js&gt;);           &lt;jc&gt;// foo2 == 2 &lt;/jc&gt;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    * &lt;/p&gt;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    *<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    * @param inner The inner map.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    * Can be &lt;jk&gt;null&lt;/jk&gt; to remove the inner map from an existing map.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    * @return This object (for method chaining).<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   public ObjectMap setInner(Map&lt;String,Object&gt; inner) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      this.inner = inner;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      return this;<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>    * Searches for the specified key in this map ignoring case.<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    *<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    * @param key The key to search for.  For performance reasons, it's preferrable that the key be all lowercase.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    * @return The key, or &lt;jk&gt;null&lt;/jk&gt; if map does not contain this key.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   public String findKeyIgnoreCase(String key) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      for (String k : keySet())<a name="line.257"></a>
-<span class="sourceLineNo">258</span>         if (key.equalsIgnoreCase(k))<a name="line.258"></a>
-<span class="sourceLineNo">259</span>            return k;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      return null;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   }<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>   /**<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    * Override the default bean session used for converting POJOs.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    * &lt;p&gt;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    * Default is {@link BeanContext#DEFAULT}, which is sufficient in most cases.<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    * &lt;p&gt;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    * Useful if you're serializing/parsing beans with transforms defined.<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    *<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    * @param session The new bean session.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    * @return This object (for method chaining).<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    */<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   public ObjectMap setBeanSession(BeanSession session) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      this.session = session;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return this;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   }<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>   /**<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    * Returns the {@link BeanSession} currently associated with this map.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    *<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    * @return The {@link BeanSession} currently associated with this map.<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   public BeanSession getBeanSession() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      return session;<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>   /**<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    * Convenience method for adding multiple objects to this map.<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    * &lt;p&gt;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    * Equivalent to calling {@code put(key, value)}, but returns<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    *    this map so that the method can be chained.<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    *<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    * @param key The key.<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    * @param value The value.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    * @return This object (for method chaining).<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   public ObjectMap append(String key, Object value) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      put(key, value);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      return this;<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>    * Convenience method for adding a contents of another map to this map.<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    * &lt;p&gt;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    * Equivalent to calling {@code putAll(m)}, but returns<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    *    this map so that the method can be chained.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    *<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    * @param m The map whose contents should be added to this map.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    * @return This object (for method chaining).<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   public ObjectMap appendAll(Map&lt;String,Object&gt; m) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      putAll(m);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      return this;<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>   @Override /* Map */<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   public Object get(Object key) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      Object o = super.get(key);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      if (o == null &amp;&amp; inner != null)<a name="line.319"></a>
-<span class="sourceLineNo">320</span>         o = inner.get(key);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      return o;<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>    * Same as {@link Map#get(Object) get()}, but returns the default value if the key<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    * could not be found.<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    *<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    * @param key The key.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    * @param def The default value if the entry doesn't exist.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    * @return The value, or the default value if the entry doesn't exist.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   public Object get(String key, Object def) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      Object o = get(key);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      return (o == null ? def : o);<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>    * Same as {@link Map#get(Object) get()}, but casts or converts the value to the specified class type.<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    * &lt;p&gt;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    * See {@link BeanSession#convertToType(Object, ClassMeta)} for the list of valid data conversions.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    *<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    * @param &lt;T&gt; The class type.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    * @param type The class type.<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    * @param key The key.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    * @return The value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   public &lt;T&gt; T get(Class&lt;T&gt; type, String key) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      return get(type, key, null);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>   /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    * Same as {@link Map#get(Object) get()}, but converts the raw value to the specified class type using the specified beanFilter.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    *<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    * @param &lt;T&gt; The transformed class type.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    * @param pojoSwap The swap class used to convert the raw type to a transformed type.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    * @param key The key.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    * @return The value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    * @throws ParseException Thrown by the POJO swap if a problem occurred trying to parse the value.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    */<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   @SuppressWarnings({ "rawtypes", "unchecked" })<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   public &lt;T&gt; T get(PojoSwap&lt;T,?&gt; pojoSwap, String key) throws ParseException {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      Object o = super.get(key);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (o == null)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>         return null;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      PojoSwap swap = pojoSwap;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      return (T)swap.unswap(session, o, null);<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>    * Same as {@link Map#get(Object) get()}, but casts or converts the value to the specified class type.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    * &lt;p&gt;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    * See {@link BeanSession#convertToType(Object, ClassMeta)} for the list of valid data conversions.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    *<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    * @param &lt;T&gt; The class type.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    * @param type The class type.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    * @param key The key.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    * @param def The default value if the entry doesn't exist.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    * @return The value, or the default value if the entry doesn't exist.<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    */<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   @SuppressWarnings("unchecked")<a name="line.380"></a>
-<span class="sourceLineNo">381</span>   public &lt;T&gt; T get(Class&lt;T&gt; type, String key, T def) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      Object o = get(key);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (o == null)<a name="line.383"></a>
-<span class="sourceLineNo">384</span>         return def;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      T t = null;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      if (session != null)<a name="line.386"></a>
-<span class="sourceLineNo">387</span>         t = session.convertToType(o, type);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      else if (ClassUtils.isParentClass(type, o.getClass()))<a name="line.388"></a>
-<span class="sourceLineNo">389</span>         t = (T)o;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      if (t == null)<a name="line.390"></a>
-<span class="sourceLineNo">391</span>         return def;<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      return t;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   }<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>    * Same as {@link Map#get(Object) get()}, but casts or converts the value to the specified class type.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    * &lt;p&gt;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    * See {@link BeanSession#convertToType(Object, ClassMeta)} for the list of valid data conversions.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    *<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    * @param &lt;T&gt; The class type.<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    * @param type The class type.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    * @param key The key.<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    * @return The value, or the default value if the entry doesn't exist.<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    */<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   public &lt;T&gt; T get(ClassMeta&lt;T&gt; type, String key) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      return get(type, key, null);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>   }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>   /**<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    * Same as {@link Map#get(Object) get()}, but casts or converts the value to the specified class type.<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    * &lt;p&gt;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    * See {@link BeanSession#convertToType(Object, ClassMeta)} for the list of valid data conversions.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    *<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    * @param &lt;T&gt; The class type.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    * @param type The class type.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    * @param key The key.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    * @param def The default value if the entry doesn't exist.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    * @return The value, or the default value if the entry doesn't exist.<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    */<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   public &lt;T&gt; T get(ClassMeta&lt;T&gt; type, String key, T def) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      Object o = get(key);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      if (o == null)<a name="line.422"></a>
-<span class="sourceLineNo">423</span>         return def;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      return session.convertToType(o, type);<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>    * Returns the value for the first key in the list that has an entry in this map.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    *<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    * @param keys The keys to look up in order.<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    * @return The value of the first entry whose key exists, or &lt;jk&gt;null&lt;/jk&gt; if none of the keys exist in this map.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   public Object find(String...keys) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      for (String key : keys)<a name="line.434"></a>
-<span class="sourceLineNo">435</span>         if (containsKey(key))<a name="line.435"></a>
-<span class="sourceLineNo">436</span>            return get(key);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      return null;<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>    * Returns the value for the first key in the list that has an entry in this map.<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    * &lt;p&gt;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    * Casts or converts the value to the specified class type.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    * &lt;p&gt;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    * See {@link BeanSession#convertToType(Object, ClassMeta)} for the list of valid data conversions.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    *<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    * @param type The class type to convert the value to.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    * @param &lt;T&gt; The class type to convert the value to.<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    * @param keys The keys to look up in order.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    * @return The value of the first entry whose key exists, or &lt;jk&gt;null&lt;/jk&gt; if none of the keys exist in this map.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   public &lt;T&gt; T find(Class&lt;T&gt; type, String...keys) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      for (String key : keys)<a name="line.453"></a>
-<span class="sourceLineNo">454</span>         if (containsKey(key))<a name="line.454"></a>
-<span class="sourceLineNo">455</span>            return get(type, key);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      return null;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>   /**<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    * Same as {@link #get(Class,String) get(Class,String)}, but the key is a slash-delimited<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    *    path used to traverse entries in this POJO.<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    * &lt;p&gt;<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    * For example, the following code is equivalent:<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    * &lt;/p&gt;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    * &lt;p class='bcode'&gt;<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    *    ObjectMap m = getObjectMap();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    *<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    *    &lt;jk&gt;long&lt;/jk&gt; l = m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).getObjectMap(&lt;js&gt;"0"&lt;/js&gt;).getLong(&lt;js&gt;"baz"&lt;/js&gt;);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    *<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    *    &lt;jk&gt;long&lt;/jk&gt; l = m.getAt(&lt;jk&gt;long&lt;/jk&gt;.&lt;jk&gt;class&lt;/jk&gt;, &lt;js&gt;"foo/bar/0/baz"&lt;/js&gt;);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    * &lt;/p&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    * &lt;p&gt;<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    *<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    * @param &lt;T&gt; The class type.<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    * @param type The class type.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    * @param path The path to the entry.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    * @return The value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    */<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   public &lt;T&gt; T getAt(Class&lt;T&gt; type, String path) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      return getPojoRest().get(type, path);<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>    * Same as &lt;code&gt;put(String,Object)&lt;/code&gt;, but the key is a slash-delimited<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    *    path used to traverse entries in this POJO.<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    * &lt;p&gt;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    * For example, the following code is equivalent:<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    * &lt;/p&gt;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    * &lt;p class='bcode'&gt;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    *    ObjectMap m = getObjectMap();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    *<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    *    m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).getObjectMap(&lt;js&gt;"0"&lt;/js&gt;).put(&lt;js&gt;"baz"&lt;/js&gt;, 123);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    *<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    *    m.putAt(&lt;js&gt;"foo/bar/0/baz"&lt;/js&gt;, 123);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    * &lt;/p&gt;<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    * &lt;p&gt;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    *<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    * @param path The path to the entry.<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    * @param o The new value.<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    * @return The previous value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    */<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   public Object putAt(String path, Object o) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      return getPojoRest().put(path, o);<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>   /**<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    * Similar to {@link #putAt(String,Object) putAt(String,Object)}, but used to append<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    *    to collections and arrays.<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    * &lt;p&gt;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    * For example, the following code is equivalent:<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    * &lt;/p&gt;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    * &lt;p class='bcode'&gt;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    *    ObjectMap m = getObjectMap();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    *<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    *    m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).append(123);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    *<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    *    m.postAt(&lt;js&gt;"foo/bar"&lt;/js&gt;, 123);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    * &lt;/p&gt;<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    * &lt;p&gt;<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    *<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    * @param path The path to the entry.<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    * @param o The new value.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    * @return The previous value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    */<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   public Object postAt(String path, Object o) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      return getPojoRest().post(path, o);<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>   /**<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    * Similar to {@link #remove(Object) remove(Object)},but the key is a slash-delimited<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    *    path used to traverse entries in this POJO.<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    * &lt;p&gt;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    * For example, the following code is equivalent:<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    * &lt;/p&gt;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    * &lt;p class='bcode'&gt;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    *    ObjectMap m = getObjectMap();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    *<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    *    &lt;jc&gt;// Long way&lt;/jc&gt;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    *    m.getObjectMap(&lt;js&gt;"foo"&lt;/js&gt;).getObjectList(&lt;js&gt;"bar"&lt;/js&gt;).getObjectMap(1).remove(&lt;js&gt;"baz"&lt;/js&gt;);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    *<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    *    &lt;jc&gt;// Using this method&lt;/jc&gt;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    *    m.deleteAt(&lt;js&gt;"foo/bar/0/baz"&lt;/js&gt;);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    * &lt;/p&gt;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    * &lt;p&gt;<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    * This method uses the {@link PojoRest} class to perform the lookup, so the map can contain<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    *    any of the various class types that the {@link PojoRest} class supports (e.g. beans, collections, arrays).<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    *<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    * @param path The path to the entry.<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    * @return The previous value, or &lt;jk&gt;null&lt;/jk&gt; if the entry doesn't exist.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    */<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   public Object deleteAt(String path) {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      return getPojoRest().delete(path);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   }<a name="line.565"></a>
-<span class="sourceLineNo">566</span><a name="line.566"></a>
-<span class="sourceLineNo">567</span>   /**<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    * Convenience method for inserting JSON directly into an attribute on this object.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    * &lt;p&gt;<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    * The JSON text can be an object (i.e. &lt;js&gt;"{...}"&lt;/js&gt;) or an array (i.e. &lt;js&gt;"[...]"&lt;/js&gt;).<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    *<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    * @param key The key.<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    * @param json The JSON text that will be parsed into an Object and then inserted into this map.<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    * @throws ParseException If the input contains a syntax error or is malformed.<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    */<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   public void putJson(String key, String json) throws ParseException {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      this.put(key, JsonParser.DEFAULT.parse(json, Object.class));<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   }<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>   /**<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    * Returns the specified entry value converted to a {@link String}.<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    * &lt;p&gt;<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    * Shortcut for &lt;code&gt;get(String.&lt;jk&gt;class&lt;/jk&gt;, key)&lt;/code&gt;.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    *<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    * @param key The key.<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    * @return The converted value, or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for this key.<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    */<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   public String getString(String key) {<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      return get(String.class, key);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   }<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span>   /**<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    * Specialized method that calls {@link #getString(String)} and splits the<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    *    results as a simple comma-delimited list.<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    *<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    * @param key the key.<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    * @return A list of tokens, trimmed of whitespace.  An empty list if entry not found.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    */<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   public String[] getStringArray(String key) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      String s = get(String.class, key);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      return (s == null ? new String[0] : split(s, ','));<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   }<a name="line.602"></a>
-<span class="sourceLineNo">603</span><a name="line.603"></a>
-<span class="sourceLineNo">604</span>   /**<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    * Same as {@link #getStringArray(String)} but returns a default value if the value cannot be found.<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    *<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    * @param key The map key.<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    * @param def The default value if value is not found.<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    * @return The value converted to a string array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    */<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   public String[] getStringArray(String key, String[] def) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      String s = get(String.class, key);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      String[] r = (s == null ? new String[0] : split(s, ','));<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      return (r.length == 0 ? def : r);<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>   /**<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    * Returns the specified entry value converted to a {@link String}.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    * &lt;p&gt;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    * Shortcut for &lt;code&gt;get(String.&lt;jk&gt;class&lt;/jk&gt;, key, defVal)&lt;/code&gt;.<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    *<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    * @param key The key.<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    * @param defVal The default value if the map doesn't contain the specified mapping.<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    * @return The converted value, or the default value if the map contains no mapping for this key.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    */<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   public String getString(String key, String defVal) {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      return get(String.class, key, defVal);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   }<a name="line.628"></a>
-<span class="sourceLineNo">629</span><a name="line.629"></a>
-<span class="sourceLineNo">630</span>   /**<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    * Returns the specified entry value converted to an {@link Integer}.<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    * &lt;p&gt;<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    * Shortcut for &lt;code&gt;get(Integer.&lt;jk&gt;class&lt;/jk&gt;, key)&lt;/code&gt;.<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    *<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    * @param key The key.<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    * @return The converted value, or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for this key.<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    */<a name="line.638"></a>
-<span class="sourceLineNo">639</span>   public Integer getInt(String key) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      return get(Integer.class, key);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   }<a name="line.641"></a>
-<span class="sourceLineNo">642</span><a name="line.642"></a>
-<span class="sourceLineNo">643</span>   /**<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    * Returns the specified entry value converted to an {@link Integer}.<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    * &lt;p&gt;<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    * Shortcut for &lt;code&gt;get(Integer.&lt;jk&gt;class&lt;/jk&gt;, key, defVal)&lt;/code&gt;.<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    *<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    * @param key The key.<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    * @param defVal The default value if the map doesn't contain the specified mapping.<a name="line.649"></a>
-<span class="sourceLineNo">650</span>    * @return The converted value, or the default value if the map contains no mapping for this key.<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    */<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   public Integer getInt(String key, Integer defVal) {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      return get(Integer.class, key, defVal);<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 specified entry value converted to a {@link Long}.<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    * &lt;p&gt;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    * Shortcut for &lt;code&gt;get(Long.&lt;jk&gt;class&lt;/jk&gt;, key)&lt;/code&gt;.<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    *<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    * @param key The key.<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    * @return The converted value, or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for this key.<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    */<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   public Long getLong(String key) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>      return get(Long.class, key);<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>   /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    * Returns the specified entry value converted to a {@link Long}.<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    * &lt;p&gt;<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    * Shortcut for &lt;code&gt;get(Long.&lt;jk&gt;class&lt;/jk&gt;, key, defVal)&lt;/code&gt;.<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    *<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    * @param key The key.<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    * @param defVal The default value if the map doesn't contain the specified mapping.<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    * @return The converted value, or the default value if the map contains no mapping for this key.<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    */<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   public Long getLong(String key, Long defVal) {<a name="line.680"></a>
-<span class="sourceLineNo">681</span>      return get(Long.class, key, defVal);<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>   /**<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    * Returns the specified entry value converted to a {@link Boolean}.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    * &lt;p&gt;<a name="line.686"></a>
-<span class="sourceLineNo">687</span>    * Shortcut for &lt;code&gt;get(Boolean.&lt;jk&gt;class&lt;/jk&gt;, key)&lt;/code&gt;.<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    *<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    * @param key The key.<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    * @return The converted value, or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for this key.<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    */<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   public Boolean getBoolean(String key) {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      return get(Boolean.class, key);<a name="line.694"></a>
-<span class="sourceLineNo">695</span>   }<a name="line.695"></a>
-<span class="sourceLineNo">696</span><a name="line.696"></a>
-<span class="sourceLineNo">697</span>   /**<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    * Returns the specified entry value converted to a {@link Boolean}.<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    * &lt;p&gt;<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    * Shortcut for &lt;code&gt;get(Boolean.&lt;jk&gt;class&lt;/jk&gt;, key, defVal)&lt;/code&gt;.<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    *<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    * @param key The key.<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    * @param defVal The default value if the map doesn't contain the specified mapping.<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    * @return The converted value, or the default value if the map contains no mapping for this key.<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    */<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   public Boolean getBoolean(String key, Boolean defVal) {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>      return get(Boolean.class, key, defVal);<a name="line.708"></a>
-<span class="sourceLineNo">709</span>   }<a name="line.709"></a>
-<span class="sourceLineNo">710</span><a name="line.710"></a>
-<span class="sourceLineNo">711</span>   /**<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    * Returns the specified entry value converted to a {@link Map}.<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    * &lt;p&gt;<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    * Shortcut for &lt;code&gt;get(Map.&lt;jk&gt;class&lt;/jk&gt;, key)&lt;/code&gt;.<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    *<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    * @param key The key.<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    * @return The converted value, or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for this key.<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    */<a name="line.719"></a>
-<span class="sourceLineNo">720</span>   public Map&lt;?,?&gt; getMap(String key) {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>      return get(Map.class, key);<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>    * Returns the specified entry value converted to a {@link Map}.<a name="line.725"></a>
-<span class="sourceLineNo">726</span>    * &lt;p&gt;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    * Shortcut for &lt;code&gt;get(Map.&lt;jk&gt;class&lt;/jk&gt;, key, defVal)&lt;/code&gt;.<a name="line.727"></a>
-<span class="sourceLineNo">728</span>    *<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    * @param key The key.<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    * @param defVal The default value if the map doesn't contain the specified mapping.<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    * @return The converted value, or the default value if the map contains no mapping for this key.<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    */<a name="line.733"></a>
-<span class="sourceLineNo">734</span>   public Map&lt;?,?&gt; getMap(String key, Map&lt;?,?&gt; defVal) {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>      return get(Map.class, key, defVal);<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>    * Returns the specified entry value converted to a {@link List}.<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    * &lt;p&gt;<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    * Shortcut for &lt;code&gt;get(List.&lt;jk&gt;class&lt;/jk&gt;, key)&lt;/code&gt;.<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    *<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    * @param key The key.<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    * @return The converted value, or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for this key.<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    */<a name="line.746"></a>
-<span class="sourceLineNo">747</span>   public List&lt;?&gt; getList(String key) {<a name="line.747"></a>
-<span class="sourceLineNo">748</span>      return get(List.class, key);<a name="line.748"></a>
-<span class="sourceLineNo">749</span>   }<a name="line.749"></a>
-<span class="sourceLineNo">750</span><a name="line.750"></a>
-<span class="sourceLineNo">751</span>   /**<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    * Returns the specified entry value converted to a {@link List}.<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    * &lt;p&gt;<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    * Shortcut for &lt;code&gt;get(List.&lt;jk&gt;class&lt;/jk&gt;, key, defVal)&lt;/code&gt;.<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    *<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    * @param key The key.<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    * @param defVal The default value if the map doesn't contain the specified mapping.<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    * @return The converted value, or the default value if the map contains no mapping for this key.<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    */<a name="line.760"></a>
-<span class="sourceLineNo">761</span>   public List&lt;?&gt; getList(String key, List&lt;?&gt; defVal) {<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      return get(List.class, key, defVal);<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   }<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>   /**<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    * Returns the specified entry value converted to a {@link Map}.<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    * &lt;p&gt;<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    * Shortcut for &lt;code&gt;get(ObjectMap.&lt;jk&gt;class&lt;/jk&gt;, key)&lt;/code&gt;.<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    *<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    * @param key The key.<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    * @return The converted value, or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for this key.<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    */<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   public ObjectMap getObjectMap(String key) {<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      return get(ObjectMap.class, key);<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   }<a name="line.776"></a>
-<span class="sourceLineNo">777</span><a name="line.777"></a>
-<span class="sourceLineNo">778</span>   /**<a name="line.778"></a>
-<span class="sourceLineNo">779</span>    * Returns the specified entry value converted to a {@link ObjectMap}.<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    * &lt;p&gt;<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    * Shortcut for &lt;code&gt;get(ObjectMap.&lt;jk&gt;class&lt;/jk&gt;, key, defVal)&lt;/code&gt;.<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    *<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    * @param key The key.<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    * @param defVal The default value if the map doesn't contain the specified mapping.<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    * @return The converted value, or the default value if the map contains no mapping for this key.<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.786"></a>
-<span class="sourceLineNo">787</span>    */<a name="line.787"></a>
-<span class="sourceLineNo">788</span>   public ObjectMap getObjectMap(String key, ObjectMap defVal) {<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      return get(ObjectMap.class, key, defVal);<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   }<a name="line.790"></a>
-<span class="sourceLineNo">791</span><a name="line.791"></a>
-<span class="sourceLineNo">792</span>   /**<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    * Returns the specified entry value converted to a {@link ObjectList}.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    * &lt;p&gt;<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    * Shortcut for &lt;code&gt;get(ObjectList.&lt;jk&gt;class&lt;/jk&gt;, key)&lt;/code&gt;.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    *<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    * @param key The key.<a name="line.797"></a>
-<span class="sourceLineNo">798</span>    * @return The converted value, or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for this key.<a name="line.798"></a>
-<span class="sourceLineNo">799</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.799"></a>
-<span class="sourceLineNo">800</span>    */<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   public ObjectList getObjectList(String key) {<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      return get(ObjectList.class, key);<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>   /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    * Returns the specified entry value converted to a {@link ObjectList}.<a name="line.806"></a>
-<span class="sourceLineNo">807</span>    * &lt;p&gt;<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    * Shortcut for &lt;code&gt;get(ObjectList.&lt;jk&gt;class&lt;/jk&gt;, key, defVal)&lt;/code&gt;.<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    *<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    * @param key The key.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    * @param defVal The default value if the map doesn't contain the specified mapping.<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    * @return The converted value, or the default value if the map contains no mapping for this key.<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    */<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   public ObjectList getObjectList(String key, ObjectList defVal) {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      return get(ObjectList.class, key, defVal);<a name="line.816"></a>
-<span class="sourceLineNo">817</span>   }<a name="line.817"></a>
-<span class="sourceLineNo">818</span><a name="line.818"></a>
-<span class="sourceLineNo">819</span>   /**<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    * Returns the first entry that exists converted to a {@link String}.<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    * &lt;p&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    * Shortcut for &lt;code&gt;find(String.&lt;jk&gt;class&lt;/jk&gt;, keys)&lt;/code&gt;.<a name="line.822"></a>
-<span class="sourceLineNo">823</span>    *<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    * @param keys The list of keys to look for.<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    * @return The converted value of the first key in the list that has an entry in this map,<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    *    or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for any of the keys.<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    */<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   public String findString(String... keys) {<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      return find(String.class, keys);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   }<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>   /**<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    * Returns the first entry that exists converted to an {@link Integer}.<a name="line.833"></a>
-<span class="sourceLineNo">834</span>    * &lt;p&gt;<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    * Shortcut for &lt;code&gt;find(Integer.&lt;jk&gt;class&lt;/jk&gt;, keys)&lt;/code&gt;.<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    *<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    * @param keys The list of keys to look for.<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    * @return The converted value of the first key in the list that has an entry in this map,<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    *    or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for any of the keys.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    */<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   public Integer findInt(String... keys) {<a name="line.842"></a>
-<span class="sourceLineNo">843</span>      return find(Integer.class, keys);<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   }<a name="line.844"></a>
-<span class="sourceLineNo">845</span><a name="line.845"></a>
-<span class="sourceLineNo">846</span>   /**<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    * Returns the first entry that exists converted to a {@link Long}.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    * &lt;p&gt;<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    * Shortcut for &lt;code&gt;find(Long.&lt;jk&gt;class&lt;/jk&gt;, keys)&lt;/code&gt;.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    *<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    * @param keys The list of keys to look for.<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    * @return The converted value of the first key in the list that has an entry in this map,<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    *    or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for any of the keys.<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    */<a name="line.855"></a>
-<span class="sourceLineNo">856</span>   public Long findLong(String... keys) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      return find(Long.class, keys);<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>   /**<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    * Returns the first entry that exists converted to a {@link Boolean}.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    * &lt;p&gt;<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    * Shortcut for &lt;code&gt;find(Boolean.&lt;jk&gt;class&lt;/jk&gt;, keys)&lt;/code&gt;.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    *<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    * @param keys The list of keys to look for.<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    * @return The converted value of the first key in the list that has an entry in this map,<a name="line.866"></a>
-<span class="sourceLineNo">867</span>    *    or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for any of the keys.<a name="line.867"></a>
-<span class="sourceLineNo">868</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    */<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   public Boolean findBoolean(String... keys) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>      return find(Boolean.class, keys);<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>    * Returns the first entry that exists converted to a {@link Map}.<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    * &lt;p&gt;<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    * Shortcut for &lt;code&gt;find(Map.&lt;jk&gt;class&lt;/jk&gt;, keys)&lt;/code&gt;.<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    *<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    * @param keys The list of keys to look for.<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    * @return The converted value of the first key in the list that has an entry in this map,<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    *    or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for any of the keys.<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    */<a name="line.883"></a>
-<span class="sourceLineNo">884</span>   public Map&lt;?,?&gt; findMap(String... keys) {<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      return find(Map.class, keys);<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 the first entry that exists converted to a {@link List}.<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    * &lt;p&gt;<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    * Shortcut for &lt;code&gt;find(List.&lt;jk&gt;class&lt;/jk&gt;, keys)&lt;/code&gt;.<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    *<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    * @param keys The list of keys to look for.<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    * @return The converted value of the first key in the list that has an entry in this map,<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    *    or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for any of the keys.<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    */<a name="line.897"></a>
-<span class="sourceLineNo">898</span>   public List&lt;?&gt; findList(String... keys) {<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      return find(List.class, keys);<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   }<a name="line.900"></a>
-<span class="sourceLineNo">901</span><a name="line.901"></a>
-<span class="sourceLineNo">902</span>   /**<a name="line.902"></a>
-<span class="sourceLineNo">903</span>    * Returns the first entry that exists converted to a {@link ObjectMap}.<a name="line.903"></a>
-<span class="sourceLineNo">904</span>    * &lt;p&gt;<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    * Shortcut for &lt;code&gt;find(ObjectMap.&lt;jk&gt;class&lt;/jk&gt;, keys)&lt;/code&gt;.<a name="line.905"></a>
-<span class="sourceLineNo">906</span>    *<a name="line.906"></a>
-<span class="sourceLineNo">907</span>    * @param keys The list of keys to look for.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    * @return The converted value of the first key in the list that has an entry in this map,<a name="line.908"></a>
-<span class="sourceLineNo">909</span>    *    or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for any of the keys.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    */<a name="line.911"></a>
-<span class="sourceLineNo">912</span>   public ObjectMap findObjectMap(String... keys) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      return find(ObjectMap.class, keys);<a name="line.913"></a>
-<span class="sourceLineNo">914</span>   }<a name="line.914"></a>
-<span class="sourceLineNo">915</span><a name="line.915"></a>
-<span class="sourceLineNo">916</span>   /**<a name="line.916"></a>
-<span class="sourceLineNo">917</span>    * Returns the first entry that exists converted to a {@link ObjectList}.<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    * &lt;p&gt;<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    * Shortcut for &lt;code&gt;find(ObjectList.&lt;jk&gt;class&lt;/jk&gt;, keys)&lt;/code&gt;.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    *<a name="line.920"></a>
-<span class="sourceLineNo">921</span>    * @param keys The list of keys to look for.<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    * @return The converted value of the first key in the list that has an entry in this map,<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    *    or &lt;jk&gt;null&lt;/jk&gt; if the map contains no mapping for any of the keys.<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.924"></a>
-<span class="sourceLineNo">925</span>    */<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   public ObjectList findObjectList(String... keys) {<a name="line.926"></a>
-<span class="sourceLineNo">927</span>      return find(ObjectList.class, keys);<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   }<a name="line.928"></a>
-<span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>   /**<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    * Returns the first key in the map.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>    *<a name="line.932"></a>
-<span class="sourceLineNo">933</span>    * @return The first key in the map, or &lt;jk&gt;null&lt;/jk&gt; if the map is empty.<a name="line.933"></a>
-<span class="sourceLineNo">934</span>    */<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   public String getFirstKey() {<a name="line.935"></a>
-<span class="sourceLineNo">936</span>      return isEmpty() ? null : keySet().iterator().next();<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>    * Returns the class type of the object at the specified index.<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    *<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    * @param key The key into this map.<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    * @return The data type of the object at the specified key, or &lt;jk&gt;null&lt;/jk&gt; if the value is null or does not exist.<a name="line.943"></a>
-<span class="sourceLineNo">944</span>    */<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   public ClassMeta&lt;?&gt; getClassMeta(String key) {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      return session.getClassMetaForObject(get(key));<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>   /**<a name="line.949"></a>
-<span class="sourceLineNo">950</span>    * Equivalent to calling &lt;code&gt;get(class,key,def)&lt;/code&gt; followed by &lt;code&gt;remove(key);&lt;/code&gt;<a name="line.950"></a>
-<span class="sourceLineNo">951</span>    *<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    * @param &lt;T&gt; The class type.<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    * @param type The class type.<a name="line.953"></a>
-<span class="sourceLineNo">954</span>    * @param key The key.<a name="line.954"></a>
-<span class="sourceLineNo">955</span>    * @param defVal The default value if the map doesn't contain the specified mapping.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>    * @return The converted value, or the default value if the map contains no mapping for this key.<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    * @throws InvalidDataConversionException If value cannot be converted.<a name="line.957"></a>
-<span class="sourceLineNo">958</span>    */<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   public &lt;T&gt; T remove(Class&lt;T&gt; type, String key, T defVal) {<a name="line.959"></a>
-<span class="sourceLineNo">960</span>      T t = get(type, key, defVal);<a name="line.960"></a>
-<span class="sourceLineNo">961</span>      remove(key);<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      return t;<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>    * Convenience method for removing several keys at once.<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    *<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    * @param keys The list of keys to remove.<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    */<a name="line.970"></a>
-<span class="sourceLineNo">971</span>   public void removeAll(Collection&lt;String&gt; keys) {<a name="line.971"></a>
-<span class="sourceLineNo">972</span>      for (String k : keys)<a name="line.972"></a>
-<span class="sourceLineNo">973</span>         remove(k);<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>   /**<a name="line.976"></a>
-<span class="sourceLineNo">977</span>    * Convenience method for removing several keys at once.<a name="line.977"></a>
-<span class="sourceLineNo">978</span>    *<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    * @param keys The list of keys to remove.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    */<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   public void removeAll(String... keys) {<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      for (String k : keys)<a name="line.982"></a>
-<span class="sourceLineNo">983</span>         remove(k);<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   }<a name="line.984"></a>
-<span class="sourceLineNo">985</span><a name="line.985"></a>
-<span class="sourceLineNo">986</span>   @Override /* Map */<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   public boolean containsKey(Object key) {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>      if (super.containsKey(key))<a name="line.988"></a>
-<span class="sourceLineNo">989</span>         return true;<a name="line.989"></a>
-<span class="sourceLineNo">990</span>      if (inner != null)<a name="line.990"></a>
-<span class="sourceLineNo">991</span>         return inner.containsKey(key);<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      return false;<a name="line.992"></a>
-<span class="sourceLineNo">993</span>   }<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>    * Returns &lt;jk&gt;true&lt;/jk&gt; if this map contains the specified key, ignoring<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    *    the inner map if it exists.<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    *<a name="line.998"></a>
-<span class="sourceLineNo">999</span>    * @param key The key to look up.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if this map contains the specified key.<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>    */<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>   public boolean containsOuterKey(Object key) {<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>      return super.containsKey(key);<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   }<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span><a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   /**<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    * Returns a copy of this &lt;code&gt;ObjectMap&lt;/code&gt; with only the specified keys.<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>    *<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>    * @param keys The keys of the entries to copy.<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    * @return A new map with just the keys and values from this map.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    */<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>   public ObjectMap include(String...keys) {<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      ObjectMap m2 = new ObjectMap();<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>      for (Map.Entry&lt;String,Object&gt; e : this.entrySet())<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>         for (String k : keys)<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>            if (k.equals(e.getKey()))<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>               m2.put(k, e.getValue());<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      return m2;<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>   }<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span><a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   /**<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>    * Returns a copy of this &lt;code&gt;ObjectMap&lt;/code&gt; without the specified keys.<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    *<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>    * @param keys The keys of the entries not to copy.<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    * @return A new map without the keys and values from this map.<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>    */<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>   public ObjectMap exclude(String...keys) {<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>      ObjectMap m2 = new ObjectMap();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>      for (Map.Entry&lt;String,Object&gt; e : this.entrySet()) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>         boolean exclude = false;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>         for (String k : keys)<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>            if (k.equals(e.getKey()))<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>               exclude = true;<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>         if (! exclude)<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>            m2.put(e.getKey(), e.getValue());<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>      }<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      return m2;<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>   }<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span><a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>   /**<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    * Set

<TRUNCATED>


[20/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/BeanPropertyMeta.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/BeanPropertyMeta.html b/content/site/apidocs/org/apache/juneau/BeanPropertyMeta.html
index 2f637a8..fd02719 100644
--- a/content/site/apidocs/org/apache/juneau/BeanPropertyMeta.html
+++ b/content/site/apidocs/org/apache/juneau/BeanPropertyMeta.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -269,24 +269,31 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </td>
 </tr>
 <tr id="i14" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanPropertyMeta.html#getRaw-org.apache.juneau.BeanMap-java.lang.String-">getRaw</a></span>(<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;?&gt;&nbsp;m,
+      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pName)</code>
+<div class="block">Equivalent to calling <a href="../../../org/apache/juneau/BeanMap.html#getRaw-java.lang.Object-"><code>BeanMap.getRaw(Object)</code></a>, but is faster since it avoids looking up the property meta.</div>
+</td>
+</tr>
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code><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/BeanPropertyMeta.html#getSetter--">getSetter</a></span>()</code>
 <div class="block">Returns the setter method for this property.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanPropertyMeta.html#isDyna--">isDyna</a></span>()</code>
 <div class="block">Returns <jk>true</jk> if this bean property is named <js>"*"</js>.</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanPropertyMeta.html#isUri--">isUri</a></span>()</code>
 <div class="block">Returns <jk>true</jk> if this bean property is a URI.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanPropertyMeta.html#set-org.apache.juneau.BeanMap-java.lang.String-java.lang.Object-">set</a></span>(<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;?&gt;&nbsp;m,
    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pName,
@@ -295,14 +302,14 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
    looking up the property meta.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanPropertyMeta.html#setArray-java.lang.Object-java.util.List-">setArray</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;bean,
         <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>&nbsp;l)</code>
 <div class="block">Sets an array field on this bean.</div>
 </td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" 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/BeanPropertyMeta.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
@@ -334,7 +341,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BeanPropertyMeta</h4>
-<pre>protected&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.268">BeanPropertyMeta</a>(<a href="../../../org/apache/juneau/BeanPropertyMeta.Builder.html" title="class in org.apache.juneau">BeanPropertyMeta.Builder</a>&nbsp;b)</pre>
+<pre>protected&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.266">BeanPropertyMeta</a>(<a href="../../../org/apache/juneau/BeanPropertyMeta.Builder.html" title="class in org.apache.juneau">BeanPropertyMeta.Builder</a>&nbsp;b)</pre>
 <div class="block">Creates a new BeanPropertyMeta using the contents of the specified builder.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -356,7 +363,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getName</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.292">getName</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.290">getName</a>()</pre>
 <div class="block">Returns the name of this bean property.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -371,7 +378,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <li class="blockList">
 <h4>getBeanMeta</h4>
 <pre><a href="../../../org/apache/juneau/annotation/BeanIgnore.html" title="annotation in org.apache.juneau.annotation">@BeanIgnore</a>
-public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in org.apache.juneau">BeanMeta</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.302">getBeanMeta</a>()</pre>
+public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in org.apache.juneau">BeanMeta</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.300">getBeanMeta</a>()</pre>
 <div class="block">Returns the bean meta that this property belongs to.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -385,7 +392,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>getGetter</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.311">getGetter</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.309">getGetter</a>()</pre>
 <div class="block">Returns the getter method for this property.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -399,7 +406,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>getSetter</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.320">getSetter</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.318">getSetter</a>()</pre>
 <div class="block">Returns the setter method for this property.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -413,7 +420,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>getField</h4>
-<pre>public&nbsp;<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>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.329">getField</a>()</pre>
+<pre>public&nbsp;<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>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.327">getField</a>()</pre>
 <div class="block">Returns the field for this property.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -427,7 +434,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>getClassMeta</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.342">getClassMeta</a>()</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.340">getClassMeta</a>()</pre>
 <div class="block">Returns the <a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau"><code>ClassMeta</code></a> of the class of this property.
  <p>
  If this property or the property type class has a <a href="../../../org/apache/juneau/transform/PojoSwap.html" title="class in org.apache.juneau.transform"><code>PojoSwap</code></a> associated with it, this
@@ -445,7 +452,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>getBeanRegistry</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanRegistry.html" title="class in org.apache.juneau">BeanRegistry</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.355">getBeanRegistry</a>()</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanRegistry.html" title="class in org.apache.juneau">BeanRegistry</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.353">getBeanRegistry</a>()</pre>
 <div class="block">Returns the bean dictionary in use for this bean property.
  The order of lookup for the dictionary is as follows:
  <ol>
@@ -464,7 +471,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>isUri</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.371">isUri</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.369">isUri</a>()</pre>
 <div class="block">Returns <jk>true</jk> if this bean property is a URI.
  <p>
  A bean property can be considered a URI if any of the following are true:
@@ -485,7 +492,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>isDyna</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.379">isDyna</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.377">isDyna</a>()</pre>
 <div class="block">Returns <jk>true</jk> if this bean property is named <js>"*"</js>.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -499,7 +506,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>getProperties</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.389">getProperties</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.387">getProperties</a>()</pre>
 <div class="block">Returns the override list of properties defined through a <a href="../../../org/apache/juneau/annotation/BeanProperty.html#properties--"><code>BeanProperty.properties()</code></a> annotation
  on this property.</div>
 <dl>
@@ -514,7 +521,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>getExtendedMeta</h4>
-<pre>public&nbsp;&lt;M extends <a href="../../../org/apache/juneau/BeanPropertyMetaExtended.html" title="class in org.apache.juneau">BeanPropertyMetaExtended</a>&gt;&nbsp;M&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.399">getExtendedMeta</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;M&gt;&nbsp;c)</pre>
+<pre>public&nbsp;&lt;M extends <a href="../../../org/apache/juneau/BeanPropertyMetaExtended.html" title="class in org.apache.juneau">BeanPropertyMetaExtended</a>&gt;&nbsp;M&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.397">getExtendedMeta</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;M&gt;&nbsp;c)</pre>
 <div class="block">Returns the language-specified extended metadata on this bean property.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -530,7 +537,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.412">get</a>(<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;?&gt;&nbsp;m,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.410">get</a>(<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;?&gt;&nbsp;m,
                   <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pName)</pre>
 <div class="block">Equivalent to calling <a href="../../../org/apache/juneau/BeanMap.html#get-java.lang.Object-"><code>BeanMap.get(Object)</code></a>, but is faster since it avoids looking up the property meta.</div>
 <dl>
@@ -542,13 +549,31 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 </dl>
 </li>
 </ul>
+<a name="getRaw-org.apache.juneau.BeanMap-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getRaw</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.439">getRaw</a>(<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;?&gt;&nbsp;m,
+                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pName)</pre>
+<div class="block">Equivalent to calling <a href="../../../org/apache/juneau/BeanMap.html#getRaw-java.lang.Object-"><code>BeanMap.getRaw(Object)</code></a>, but is faster since it avoids looking up the property meta.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>m</code> - The bean map to get the transformed value from.</dd>
+<dd><code>pName</code> - The property name.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The raw property value.</dd>
+</dl>
+</li>
+</ul>
 <a name="set-org.apache.juneau.BeanMap-java.lang.String-java.lang.Object-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.480">set</a>(<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;?&gt;&nbsp;m,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.502">set</a>(<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;?&gt;&nbsp;m,
                   <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pName,
                   <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)
            throws <a href="../../../org/apache/juneau/BeanRuntimeException.html" title="class in org.apache.juneau">BeanRuntimeException</a></pre>
@@ -572,7 +597,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>getDynaMap</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.701">getDynaMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;bean)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.723">getDynaMap</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;bean)
                               throws <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>,
                                      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalAccessException.html?is-external=true" title="class or interface in java.lang">IllegalAccessException</a>,
                                      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/InvocationTargetException.html?is-external=true" title="class or interface in java.lang.reflect">InvocationTargetException</a></pre>
@@ -597,7 +622,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>setArray</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.722">setArray</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;bean,
+<pre>protected&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.744">setArray</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;bean,
                         <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>&nbsp;l)
                  throws <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>,
                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalAccessException.html?is-external=true" title="class or interface in java.lang">IllegalAccessException</a>,
@@ -621,7 +646,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.737">add</a>(<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;?&gt;&nbsp;m,
+<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.759">add</a>(<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;?&gt;&nbsp;m,
                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pName,
                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)
          throws <a href="../../../org/apache/juneau/BeanRuntimeException.html" title="class in org.apache.juneau">BeanRuntimeException</a></pre>
@@ -644,7 +669,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.814">add</a>(<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;?&gt;&nbsp;m,
+<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.836">add</a>(<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;?&gt;&nbsp;m,
                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pName,
                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)
@@ -667,7 +692,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>findAnnotations</h4>
-<pre>public&nbsp;&lt;A 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>&gt;&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;A&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.891">findAnnotations</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;A&gt;&nbsp;a)</pre>
+<pre>public&nbsp;&lt;A 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>&gt;&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;A&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.913">findAnnotations</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;A&gt;&nbsp;a)</pre>
 <div class="block">Returns all instances of the specified annotation in the hierarchy of this bean property.
  <p>
  Searches through the class hierarchy (e.g. superclasses, interfaces, packages) for all
@@ -686,7 +711,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockList">
 <li class="blockList">
 <h4>getAnnotation</h4>
-<pre>public&nbsp;&lt;A 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>&gt;&nbsp;A&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.919">getAnnotation</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;A&gt;&nbsp;a)</pre>
+<pre>public&nbsp;&lt;A 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>&gt;&nbsp;A&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.941">getAnnotation</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;A&gt;&nbsp;a)</pre>
 <div class="block">Returns the specified annotation on the field or methods that define this property.
  <p>
  This method will search up the parent class/interface hierarchy chain to search for the annotation on
@@ -705,7 +730,7 @@ public&nbsp;<a href="../../../org/apache/juneau/BeanMeta.html" title="class in o
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.984">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.html#line.1006">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/ObjectList.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/ObjectList.html b/content/site/apidocs/org/apache/juneau/ObjectList.html
index 4762d5d..b510db1 100644
--- a/content/site/apidocs/org/apache/juneau/ObjectList.html
+++ b/content/site/apidocs/org/apache/juneau/ObjectList.html
@@ -562,7 +562,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>ObjectList</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.152">ObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/CharSequence.html?is-external=true" title="class or interface in java.lang">CharSequence</a>&nbsp;s)
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.156">ObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/CharSequence.html?is-external=true" title="class or interface in java.lang">CharSequence</a>&nbsp;s)
            throws <a href="../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
 <div class="block">Shortcut for <code><jk>new</jk> ObjectList(String,JsonParser.<jsf>DEFAULT</jsf>);</code></div>
 <dl>
@@ -579,7 +579,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>ObjectList</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.164">ObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;r,
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.168">ObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;r,
                   <a href="../../../org/apache/juneau/parser/Parser.html" title="class in org.apache.juneau.parser">Parser</a>&nbsp;p)
            throws <a href="../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</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>
@@ -600,7 +600,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>ObjectList</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.176">ObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;r)
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.180">ObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;r)
            throws <a href="../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</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>
 <div class="block">Shortcut for <code><jk>new</jk> ObjectList(reader, JsonParser.<jsf>DEFAULT</jsf>)</code>.</div>
@@ -619,7 +619,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>ObjectList</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.190">ObjectList</a>()</pre>
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.194">ObjectList</a>()</pre>
 <div class="block">Construct an empty JSON array. (i.e. an empty <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util"><code>LinkedList</code></a>).</div>
 </li>
 </ul>
@@ -629,7 +629,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>ObjectList</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.199">ObjectList</a>(<a href="../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;session)</pre>
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.203">ObjectList</a>(<a href="../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;session)</pre>
 <div class="block">Construct an empty JSON array with the specified bean context. (i.e. an empty <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util"><code>LinkedList</code></a>).</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -643,7 +643,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>ObjectList</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.209">ObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;o)</pre>
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.213">ObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;o)</pre>
 <div class="block">Construct a JSON array and fill it with the specified objects.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -657,7 +657,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ObjectList</h4>
-<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.218">ObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;c)</pre>
+<pre>public&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.222">ObjectList</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;?&gt;&nbsp;c)</pre>
 <div class="block">Construct a JSON array and fill it with the specified collection of objects.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -679,7 +679,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>setBeanSession</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.232">setBeanSession</a>(<a href="../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;session)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.236">setBeanSession</a>(<a href="../../../org/apache/juneau/BeanSession.html" title="class in org.apache.juneau">BeanSession</a>&nbsp;session)</pre>
 <div class="block">Override the default bean session used for converting POJOs.
  <p>
  Default is <a href="../../../org/apache/juneau/BeanContext.html#DEFAULT"><code>BeanContext.DEFAULT</code></a>, which is sufficient in most cases.
@@ -699,7 +699,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>append</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.242">append</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;o)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.246">append</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>...&nbsp;o)</pre>
 <div class="block">Convenience method for adding multiple objects to this list.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -715,7 +715,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.258">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.262">get</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
                  int&nbsp;index)</pre>
 <div class="block">Get the entry at the specified index, converted to the specified type (if possible).
  <p>
@@ -737,7 +737,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.268">getString</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.272">getString</a>(int&nbsp;index)</pre>
 <div class="block">Shortcut for calling <code>get(String.<jk>class</jk>, index)</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -753,7 +753,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getInt</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.279">getInt</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.283">getInt</a>(int&nbsp;index)</pre>
 <div class="block">Shortcut for calling <code>get(Integer.<jk>class</jk>, index)</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -771,7 +771,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getBoolean</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.290">getBoolean</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.294">getBoolean</a>(int&nbsp;index)</pre>
 <div class="block">Shortcut for calling <code>get(Boolean.<jk>class</jk>, index)</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -789,7 +789,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getLong</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.301">getLong</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.305">getLong</a>(int&nbsp;index)</pre>
 <div class="block">Shortcut for calling <code>get(Long.<jk>class</jk>, index)</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -807,7 +807,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getMap</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.312">getMap</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;?,?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.316">getMap</a>(int&nbsp;index)</pre>
 <div class="block">Shortcut for calling <code>get(Map.<jk>class</jk>, index)</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -825,7 +825,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getList</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.323">getList</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.327">getList</a>(int&nbsp;index)</pre>
 <div class="block">Shortcut for calling <code>get(List.<jk>class</jk>, index)</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -843,7 +843,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getObjectMap</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.334">getObjectMap</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.338">getObjectMap</a>(int&nbsp;index)</pre>
 <div class="block">Shortcut for calling <code>get(ObjectMap.<jk>class</jk>, index)</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -861,7 +861,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getObjectList</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.345">getObjectList</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau">ObjectList</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.349">getObjectList</a>(int&nbsp;index)</pre>
 <div class="block">Shortcut for calling <code>get(ObjectList.<jk>class</jk>, index)</code>.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -879,7 +879,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getAt</h4>
-<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.373">getAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
+<pre>public&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.377">getAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;type,
                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block">Same as <a href="../../../org/apache/juneau/ObjectList.html#get-java.lang.Class-int-"><code>get(Class,int)</code></a>, but the key is a slash-delimited
    path used to traverse entries in this POJO.
@@ -915,7 +915,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>putAt</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.400">putAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.404">putAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</pre>
 <div class="block">Same as <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html?is-external=true#set-int-E-" title="class or interface in java.util"><code>set(int,Object)</code></a>, but the key is a slash-delimited
    path used to traverse entries in this POJO.
@@ -949,7 +949,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>postAt</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.427">postAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.431">postAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path,
                      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;o)</pre>
 <div class="block">Similar to <a href="../../../org/apache/juneau/ObjectList.html#putAt-java.lang.String-java.lang.Object-"><code>putAt(String,Object)</code></a>, but used to append
    to collections and arrays.
@@ -983,7 +983,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteAt</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.453">deleteAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.457">deleteAt</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;path)</pre>
 <div class="block">Similar to <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html?is-external=true#remove-int-" title="class or interface in java.util"><code>remove(int)</code></a>,but the key is a slash-delimited
    path used to traverse entries in this POJO.
  <p>
@@ -1015,7 +1015,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>elements</h4>
-<pre>public&nbsp;&lt;E&gt;&nbsp;<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>&lt;E&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.493">elements</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;E&gt;&nbsp;childType)</pre>
+<pre>public&nbsp;&lt;E&gt;&nbsp;<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>&lt;E&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.497">elements</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;E&gt;&nbsp;childType)</pre>
 <div class="block">Creates an <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang"><code>Iterable</code></a> with elements of the specified child type.
  <p>
  Attempts to convert the child objects to the correct type if they aren't already the correct type.
@@ -1062,7 +1062,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getClassMeta</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.527">getClassMeta</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;?&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.531">getClassMeta</a>(int&nbsp;index)</pre>
 <div class="block">Returns the <a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau"><code>ClassMeta</code></a> of the class of the object at the specified index.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1078,7 +1078,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.544">toString</a>(<a href="../../../org/apache/juneau/serializer/WriterSerializer.html" title="class in org.apache.juneau.serializer">WriterSerializer</a>&nbsp;serializer)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.548">toString</a>(<a href="../../../org/apache/juneau/serializer/WriterSerializer.html" title="class in org.apache.juneau.serializer">WriterSerializer</a>&nbsp;serializer)
                 throws <a href="../../../org/apache/juneau/serializer/SerializeException.html" title="class in org.apache.juneau.serializer">SerializeException</a></pre>
 <div class="block">Serialize this array to a string using the specified serializer.</div>
 <dl>
@@ -1097,7 +1097,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.552">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.556">toString</a>()</pre>
 <div class="block">Serialize this array to JSON using the <a href="../../../org/apache/juneau/json/JsonSerializer.html#DEFAULT"><code>JsonSerializer.DEFAULT</code></a> serializer.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -1111,7 +1111,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
 <ul class="blockListLast">
 <li class="blockList">
 <h4>serializeTo</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.568">serializeTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;w)
+<pre>public&nbsp;void&nbsp;<a href="../../../src-html/org/apache/juneau/ObjectList.html#line.572">serializeTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;w)
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                         <a href="../../../org/apache/juneau/serializer/SerializeException.html" title="class in org.apache.juneau.serializer">SerializeException</a></pre>
 <div class="block">Convenience method for serializing this ObjectList to the specified Writer using


[21/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
Update javadocs with QueryWidget info.

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/2871fb5d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/tree/2871fb5d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/diff/2871fb5d

Branch: refs/heads/asf-site
Commit: 2871fb5d43c024aaa3194e6ee62f77e02e602c77
Parents: 436334e
Author: JamesBognar <ja...@apache.org>
Authored: Sun Jun 18 15:40:01 2017 -0400
Committer: JamesBognar <ja...@apache.org>
Committed: Sun Jun 18 15:40:01 2017 -0400

----------------------------------------------------------------------
 content/site/apidocs/allclasses-frame.html      |    3 +
 content/site/apidocs/allclasses-noframe.html    |    3 +
 content/site/apidocs/index-all.html             |  227 +-
 .../site/apidocs/org/apache/juneau/BeanMap.html |   60 +-
 .../apache/juneau/BeanPropertyMeta.Builder.html |    2 +-
 .../org/apache/juneau/BeanPropertyMeta.html     |   79 +-
 .../apidocs/org/apache/juneau/ObjectList.html   |   54 +-
 .../apidocs/org/apache/juneau/ObjectMap.html    |  140 +-
 .../juneau/html/HtmlDocSerializerContext.html   |   30 +-
 .../juneau/html/HtmlDocSerializerSession.html   |    4 +-
 .../juneau/html/HtmlDocTemplateBasic.html       |   16 +-
 .../apache/juneau/internal/DelegateBeanMap.html |    2 +-
 .../org/apache/juneau/internal/StringUtils.html |  234 +-
 .../juneau/microservice/package-summary.html    |    6 +-
 .../org/apache/juneau/rest/RequestFormData.html |  144 +-
 .../org/apache/juneau/rest/RequestHeaders.html  |  252 +-
 .../org/apache/juneau/rest/RequestQuery.html    |  221 +-
 .../org/apache/juneau/rest/RestRequest.html     |    8 +-
 .../juneau/rest/converters/Queryable.html       |   43 +-
 .../org/apache/juneau/rest/package-summary.html |    6 +-
 .../rest/widget/PoweredByJuneauWidget.html      |    4 +-
 .../apache/juneau/rest/widget/QueryWidget.html  |  410 ++++
 .../org/apache/juneau/rest/widget/Widget.html   |    6 +-
 .../rest/widget/doc-files/PetStore_Query.png    |  Bin 0 -> 35238 bytes
 .../rest/widget/doc-files/PetStore_Query_q1.png |  Bin 0 -> 18709 bytes
 .../widget/doc-files/PetStore_Query_q10.png     |  Bin 0 -> 22147 bytes
 .../rest/widget/doc-files/PetStore_Query_q2.png |  Bin 0 -> 20455 bytes
 .../rest/widget/doc-files/PetStore_Query_q3.png |  Bin 0 -> 20269 bytes
 .../rest/widget/doc-files/PetStore_Query_q4.png |  Bin 0 -> 21004 bytes
 .../rest/widget/doc-files/PetStore_Query_q5.png |  Bin 0 -> 20463 bytes
 .../rest/widget/doc-files/PetStore_Query_q6.png |  Bin 0 -> 19557 bytes
 .../rest/widget/doc-files/PetStore_Query_q7.png |  Bin 0 -> 19621 bytes
 .../rest/widget/doc-files/PetStore_Query_q8.png |  Bin 0 -> 21190 bytes
 .../rest/widget/doc-files/PetStore_Query_q9.png |  Bin 0 -> 21224 bytes
 .../rest/widget/doc-files/PetStore_Query_r1.png |  Bin 0 -> 32218 bytes
 .../widget/doc-files/PetStore_Query_r10.png     |  Bin 0 -> 24393 bytes
 .../rest/widget/doc-files/PetStore_Query_r2.png |  Bin 0 -> 15575 bytes
 .../rest/widget/doc-files/PetStore_Query_r3.png |  Bin 0 -> 23447 bytes
 .../rest/widget/doc-files/PetStore_Query_r4.png |  Bin 0 -> 15575 bytes
 .../rest/widget/doc-files/PetStore_Query_r5.png |  Bin 0 -> 11753 bytes
 .../rest/widget/doc-files/PetStore_Query_r6.png |  Bin 0 -> 32244 bytes
 .../rest/widget/doc-files/PetStore_Query_r8.png |  Bin 0 -> 15575 bytes
 .../rest/widget/doc-files/PetStore_Query_r9.png |  Bin 0 -> 24393 bytes
 .../widget/doc-files/PetStore_Query_tooltip.png |  Bin 0 -> 64060 bytes
 .../rest/widget/doc-files/Petstore_Query_r7.png |  Bin 0 -> 32202 bytes
 .../juneau/rest/widget/package-frame.html       |    1 +
 .../juneau/rest/widget/package-summary.html     |    6 +
 .../apache/juneau/rest/widget/package-tree.html |    1 +
 .../juneau/serializer/SerializerGroup.html      |   50 +-
 .../org/apache/juneau/utils/PojoQuery.html      |  147 +-
 .../juneau/utils/ProcBuilder.Matcher.html       |    4 +-
 .../apache/juneau/utils/SearchArgs.Builder.html |  537 ++++
 .../org/apache/juneau/utils/SearchArgs.html     |  380 +++
 .../org/apache/juneau/utils/StringMessage.html  |    4 +-
 .../org/apache/juneau/utils/package-frame.html  |    2 +
 .../apache/juneau/utils/package-summary.html    |   14 +-
 .../org/apache/juneau/utils/package-tree.html   |    2 +
 content/site/apidocs/overview-summary.html      |    1 +
 content/site/apidocs/overview-tree.html         |    3 +
 .../src-html/org/apache/juneau/BeanContext.html |    8 +-
 .../src-html/org/apache/juneau/BeanMap.html     |  511 ++--
 .../apache/juneau/BeanPropertyMeta.Builder.html | 1528 ++++++------
 .../org/apache/juneau/BeanPropertyMeta.html     | 1528 ++++++------
 .../src-html/org/apache/juneau/ObjectList.html  |  862 +++----
 .../src-html/org/apache/juneau/ObjectMap.html   | 2306 +++++++++---------
 .../juneau/html/HtmlDocSerializerContext.html   |  524 ++--
 .../juneau/html/HtmlDocSerializerSession.html   |    4 +-
 .../juneau/html/HtmlDocTemplateBasic.html       |  150 +-
 .../org/apache/juneau/internal/StringUtils.html | 1573 ++++++------
 .../org/apache/juneau/rest/RequestFormData.html |  430 ++--
 .../org/apache/juneau/rest/RequestHeaders.html  | 1196 ++++-----
 .../org/apache/juneau/rest/RequestQuery.html    |  682 +++---
 .../org/apache/juneau/rest/RestRequest.html     |   26 +-
 .../juneau/rest/converters/Introspectable.html  |    4 +-
 .../juneau/rest/converters/Queryable.html       |  126 +-
 .../juneau/rest/response/DefaultHandler.html    |    4 +-
 .../org/apache/juneau/rest/vars/RequestVar.html |    4 +-
 .../apache/juneau/rest/widget/QueryWidget.html  |  202 ++
 .../juneau/serializer/SerializerGroup.html      |  285 +--
 .../org/apache/juneau/utils/PojoQuery.html      | 2245 ++++++++---------
 .../apache/juneau/utils/SearchArgs.Builder.html |  373 +++
 .../org/apache/juneau/utils/SearchArgs.html     |  373 +++
 82 files changed, 10540 insertions(+), 7510 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/allclasses-frame.html b/content/site/apidocs/allclasses-frame.html
index 79f8601..dcdc303 100644
--- a/content/site/apidocs/allclasses-frame.html
+++ b/content/site/apidocs/allclasses-frame.html
@@ -481,6 +481,7 @@
 <li><a href="org/apache/juneau/rest/annotation/Query.html" title="annotation in org.apache.juneau.rest.annotation" target="classFrame">Query</a></li>
 <li><a href="org/apache/juneau/rest/converters/Queryable.html" title="class in org.apache.juneau.rest.converters" target="classFrame">Queryable</a></li>
 <li><a href="org/apache/juneau/remoteable/QueryIfNE.html" title="annotation in org.apache.juneau.remoteable" target="classFrame">QueryIfNE</a></li>
+<li><a href="org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget" target="classFrame">QueryWidget</a></li>
 <li><a href="org/apache/juneau/http/Range.html" title="class in org.apache.juneau.http" target="classFrame">Range</a></li>
 <li><a href="org/apache/juneau/dto/html5/Rb.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Rb</a></li>
 <li><a href="org/apache/juneau/jena/annotation/Rdf.html" title="annotation in org.apache.juneau.jena.annotation" target="classFrame">Rdf</a></li>
@@ -603,6 +604,8 @@
 <li><a href="org/apache/juneau/dto/jsonschema/SchemaPropertySimpleArray.html" title="class in org.apache.juneau.dto.jsonschema" target="classFrame">SchemaPropertySimpleArray</a></li>
 <li><a href="org/apache/juneau/dto/jsonschema/SchemaRef.html" title="class in org.apache.juneau.dto.jsonschema" target="classFrame">SchemaRef</a></li>
 <li><a href="org/apache/juneau/dto/html5/Script.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Script</a></li>
+<li><a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils" target="classFrame">SearchArgs</a></li>
+<li><a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils" target="classFrame">SearchArgs.Builder</a></li>
 <li><a href="org/apache/juneau/dto/html5/Section.html" title="class in org.apache.juneau.dto.html5" target="classFrame">Section</a></li>
 <li><a href="org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini" target="classFrame">Section</a></li>
 <li><a href="org/apache/juneau/ini/SectionListener.html" title="class in org.apache.juneau.ini" target="classFrame">SectionListener</a></li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/allclasses-noframe.html b/content/site/apidocs/allclasses-noframe.html
index b46c69e..f425614 100644
--- a/content/site/apidocs/allclasses-noframe.html
+++ b/content/site/apidocs/allclasses-noframe.html
@@ -481,6 +481,7 @@
 <li><a href="org/apache/juneau/rest/annotation/Query.html" title="annotation in org.apache.juneau.rest.annotation">Query</a></li>
 <li><a href="org/apache/juneau/rest/converters/Queryable.html" title="class in org.apache.juneau.rest.converters">Queryable</a></li>
 <li><a href="org/apache/juneau/remoteable/QueryIfNE.html" title="annotation in org.apache.juneau.remoteable">QueryIfNE</a></li>
+<li><a href="org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget">QueryWidget</a></li>
 <li><a href="org/apache/juneau/http/Range.html" title="class in org.apache.juneau.http">Range</a></li>
 <li><a href="org/apache/juneau/dto/html5/Rb.html" title="class in org.apache.juneau.dto.html5">Rb</a></li>
 <li><a href="org/apache/juneau/jena/annotation/Rdf.html" title="annotation in org.apache.juneau.jena.annotation">Rdf</a></li>
@@ -603,6 +604,8 @@
 <li><a href="org/apache/juneau/dto/jsonschema/SchemaPropertySimpleArray.html" title="class in org.apache.juneau.dto.jsonschema">SchemaPropertySimpleArray</a></li>
 <li><a href="org/apache/juneau/dto/jsonschema/SchemaRef.html" title="class in org.apache.juneau.dto.jsonschema">SchemaRef</a></li>
 <li><a href="org/apache/juneau/dto/html5/Script.html" title="class in org.apache.juneau.dto.html5">Script</a></li>
+<li><a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a></li>
+<li><a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></li>
 <li><a href="org/apache/juneau/dto/html5/Section.html" title="class in org.apache.juneau.dto.html5">Section</a></li>
 <li><a href="org/apache/juneau/ini/Section.html" title="class in org.apache.juneau.ini">Section</a></li>
 <li><a href="org/apache/juneau/ini/SectionListener.html" title="class in org.apache.juneau.ini">SectionListener</a></li>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/index-all.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/index-all.html b/content/site/apidocs/index-all.html
index 64b1041..2db16b1 100644
--- a/content/site/apidocs/index-all.html
+++ b/content/site/apidocs/index-all.html
@@ -3162,6 +3162,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.html#build--">build()</a></span> - Method in class org.apache.juneau.urlencoding.<a href="org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.html" title="class in org.apache.juneau.urlencoding">UrlEncodingSerializerBuilder</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#build--">build()</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
+<dd>
+<div class="block">Construct the <a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> object.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/xml/XmlParserBuilder.html#build--">build()</a></span> - Method in class org.apache.juneau.xml.<a href="org/apache/juneau/xml/XmlParserBuilder.html" title="class in org.apache.juneau.xml">XmlParserBuilder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/xml/XmlSchemaSerializerBuilder.html#build--">build()</a></span> - Method in class org.apache.juneau.xml.<a href="org/apache/juneau/xml/XmlSchemaSerializerBuilder.html" title="class in org.apache.juneau.xml">XmlSchemaSerializerBuilder</a></dt>
@@ -3225,6 +3229,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/urlencoding/UrlEncodingSerializer.html#builder--">builder()</a></span> - Method in class org.apache.juneau.urlencoding.<a href="org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding">UrlEncodingSerializer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#Builder--">Builder()</a></span> - Constructor for class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/xml/XmlParser.html#builder--">builder()</a></span> - Method in class org.apache.juneau.xml.<a href="org/apache/juneau/xml/XmlParser.html" title="class in org.apache.juneau.xml">XmlParser</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/xml/XmlSerializer.html#builder--">builder()</a></span> - Method in class org.apache.juneau.xml.<a href="org/apache/juneau/xml/XmlSerializer.html" title="class in org.apache.juneau.xml">XmlSerializer</a></dt>
@@ -4767,7 +4773,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/converters/Introspectable.html#convert-org.apache.juneau.rest.RestRequest-java.lang.Object-org.apache.juneau.ClassMeta-">convert(RestRequest, Object, ClassMeta)</a></span> - Method in class org.apache.juneau.rest.converters.<a href="org/apache/juneau/rest/converters/Introspectable.html" title="class in org.apache.juneau.rest.converters">Introspectable</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/converters/Queryable.html#convert-org.apache.juneau.rest.RestRequest-java.lang.Object-org.apache.juneau.ClassMeta-">convert(RestRequest, Object, ClassMeta)</a></span> - Method in class org.apache.juneau.rest.converters.<a href="org/apache/juneau/rest/converters/Queryable.html" title="class in org.apache.juneau.rest.converters">Queryable</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/converters/Queryable.html#convert-org.apache.juneau.rest.RestRequest-java.lang.Object-org.apache.juneau.ClassMeta-">convert(RestRequest, Object, ClassMeta&lt;?&gt;)</a></span> - Method in class org.apache.juneau.rest.converters.<a href="org/apache/juneau/rest/converters/Queryable.html" title="class in org.apache.juneau.rest.converters">Queryable</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/converters/Traversable.html#convert-org.apache.juneau.rest.RestRequest-java.lang.Object-org.apache.juneau.ClassMeta-">convert(RestRequest, Object, ClassMeta)</a></span> - Method in class org.apache.juneau.rest.converters.<a href="org/apache/juneau/rest/converters/Traversable.html" title="class in org.apache.juneau.rest.converters">Traversable</a></dt>
 <dd>&nbsp;</dd>
@@ -6533,6 +6539,10 @@
 <dd>
 <div class="block">An efficient method for checking if a string ends with a character.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/StringUtils.html#endsWith-java.lang.String-char...-">endsWith(String, char...)</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/StringUtils.html" title="class in org.apache.juneau.internal">StringUtils</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/internal/StringUtils.html#endsWith-java.lang.String-char-"><code>StringUtils.endsWith(String, char)</code></a> except check for multiple characters.</div>
+</dd>
 <dt><a href="org/apache/juneau/http/EntityValidator.html" title="class in org.apache.juneau.http"><span class="typeNameLink">EntityValidator</span></a> - Class in <a href="org/apache/juneau/http/package-summary.html">org.apache.juneau.http</a></dt>
 <dd>
 <div class="block">Represents a validator value.</div>
@@ -7106,7 +7116,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/internal/FileUtils.html#FileUtils--">FileUtils()</a></span> - Constructor for class org.apache.juneau.internal.<a href="org/apache/juneau/internal/FileUtils.html" title="class in org.apache.juneau.internal">FileUtils</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/PojoQuery.html#filterCollection-java.util.Map-java.util.List-java.util.List-int-int-boolean-">filterCollection(Map, List, List, int, int, boolean)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/PojoQuery.html" title="class in org.apache.juneau.utils">PojoQuery</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/PojoQuery.html#filter-org.apache.juneau.utils.SearchArgs-">filter(SearchArgs)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/PojoQuery.html" title="class in org.apache.juneau.utils">PojoQuery</a></dt>
 <dd>
 <div class="block">Filters the input object as a collection of maps.</div>
 </dd>
@@ -7126,10 +7136,6 @@
 <dd>
 <div class="block">Remove all but the specified keys from this map.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/PojoQuery.html#filterMap-java.util.List-">filterMap(List)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/PojoQuery.html" title="class in org.apache.juneau.utils">PojoQuery</a></dt>
-<dd>
-<div class="block">Filters the input object as a map.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/RestClient.html#finalize--">finalize()</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/RestClient.html" title="class in org.apache.juneau.rest.client">RestClient</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/Session.html#finalize--">finalize()</a></span> - Method in class org.apache.juneau.<a href="org/apache/juneau/Session.html" title="class in org.apache.juneau">Session</a></dt>
@@ -8222,6 +8228,10 @@
 <dd>
 <div class="block">Convenience method for calling <code>getContext().getBeanContext();</code></div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/serializer/SerializerGroup.html#getBeanContext--">getBeanContext()</a></span> - Method in class org.apache.juneau.serializer.<a href="org/apache/juneau/serializer/SerializerGroup.html" title="class in org.apache.juneau.serializer">SerializerGroup</a></dt>
+<dd>
+<div class="block">Returns a bean context with the same properties as this group.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/transform/BeanFilter.html#getBeanDictionary--">getBeanDictionary()</a></span> - Method in class org.apache.juneau.transform.<a href="org/apache/juneau/transform/BeanFilter.html" title="class in org.apache.juneau.transform">BeanFilter</a></dt>
 <dd>
 <div class="block">Returns the bean dictionary defined on this bean.</div>
@@ -8342,6 +8352,30 @@
 <dd>
 <div class="block">Returns the specified entry value converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang"><code>Boolean</code></a>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestFormData.html#getBoolean-java.lang.String-">getBoolean(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestFormData.html" title="class in org.apache.juneau.rest">RequestFormData</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-"><code>RequestFormData.getString(String)</code></a> but converts the value to a boolean.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestFormData.html#getBoolean-java.lang.String-boolean-">getBoolean(String, boolean)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestFormData.html" title="class in org.apache.juneau.rest">RequestFormData</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-java.lang.String-"><code>RequestFormData.getString(String,String)</code></a> but converts the value to a boolean.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestHeaders.html#getBoolean-java.lang.String-">getBoolean(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-"><code>RequestHeaders.getString(String)</code></a> but converts the value to a boolean.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestHeaders.html#getBoolean-java.lang.String-boolean-">getBoolean(String, boolean)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-java.lang.String-"><code>RequestHeaders.getString(String,String)</code></a> but converts the value to a boolean.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestQuery.html#getBoolean-java.lang.String-">getBoolean(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-"><code>RequestQuery.getString(String)</code></a> but converts the value to a boolean.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestQuery.html#getBoolean-java.lang.String-boolean-">getBoolean(String, boolean)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-java.lang.String-"><code>RequestQuery.getString(String,String)</code></a> but converts the value to a boolean.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/utils/PojoRest.html#getBoolean-java.lang.String-">getBoolean(String)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/PojoRest.html" title="class in org.apache.juneau.utils">PojoRest</a></dt>
 <dd>
 <div class="block">Returns the specified entry value converted to a <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang"><code>Boolean</code></a>.</div>
@@ -9136,30 +9170,6 @@
 <dd>
 <div class="block">Returns the first object in the specified collection or array.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestFormData.html#getFirst-java.lang.String-">getFirst(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestFormData.html" title="class in org.apache.juneau.rest">RequestFormData</a></dt>
-<dd>
-<div class="block">Returns a form data parameter value.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestFormData.html#getFirst-java.lang.String-java.lang.String-">getFirst(String, String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestFormData.html" title="class in org.apache.juneau.rest">RequestFormData</a></dt>
-<dd>
-<div class="block">Same as <a href="org/apache/juneau/rest/RequestFormData.html#getFirst-java.lang.String-"><code>RequestFormData.getFirst(String)</code></a> except returns a default value if <jk>null</jk> or empty.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestHeaders.html#getFirst-java.lang.String-">getFirst(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></dt>
-<dd>
-<div class="block">Returns the specified header value, or <jk>null</jk> if the header doesn't exist.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestHeaders.html#getFirst-java.lang.String-java.lang.String-">getFirst(String, String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></dt>
-<dd>
-<div class="block">Returns the specified header value, or a default value if the header doesn't exist.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestQuery.html#getFirst-java.lang.String-">getFirst(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a></dt>
-<dd>
-<div class="block">Returns a query parameter value.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestQuery.html#getFirst-java.lang.String-java.lang.String-">getFirst(String, String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a></dt>
-<dd>
-<div class="block">Same as <a href="org/apache/juneau/rest/RequestQuery.html#getFirst-java.lang.String-"><code>RequestQuery.getFirst(String)</code></a> but returns the specified default value if the query parameter was not specified.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/ObjectMap.html#getFirstKey--">getFirstKey()</a></span> - Method in class org.apache.juneau.<a href="org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau">ObjectMap</a></dt>
 <dd>
 <div class="block">Returns the first key in the map.</div>
@@ -9198,7 +9208,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestRequest.html#getFormData-java.lang.String-">getFormData(String)</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">Shortcut for calling <code>getFormData().getFirst(name)</code>.</div>
+<div class="block">Shortcut for calling <code>getFormData().getString(name)</code>.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/remoteable/RemoteableMethodMeta.html#getFormDataArgs--">getFormDataArgs()</a></span> - Method in class org.apache.juneau.remoteable.<a href="org/apache/juneau/remoteable/RemoteableMethodMeta.html" title="class in org.apache.juneau.remoteable">RemoteableMethodMeta</a></dt>
 <dd>
@@ -9498,6 +9508,30 @@
 <dd>
 <div class="block">Returns the specified entry value converted to an <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang"><code>Integer</code></a>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestFormData.html#getInt-java.lang.String-">getInt(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestFormData.html" title="class in org.apache.juneau.rest">RequestFormData</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-"><code>RequestFormData.getString(String)</code></a> but converts the value to an integer.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestFormData.html#getInt-java.lang.String-int-">getInt(String, int)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestFormData.html" title="class in org.apache.juneau.rest">RequestFormData</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-java.lang.String-"><code>RequestFormData.getString(String,String)</code></a> but converts the value to an integer.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestHeaders.html#getInt-java.lang.String-">getInt(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-"><code>RequestHeaders.getString(String)</code></a> but converts the value to an integer.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestHeaders.html#getInt-java.lang.String-int-">getInt(String, int)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-java.lang.String-"><code>RequestHeaders.getString(String,String)</code></a> but converts the value to an integer.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestQuery.html#getInt-java.lang.String-">getInt(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-"><code>RequestQuery.getString(String)</code></a> but converts the value to an integer.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestQuery.html#getInt-java.lang.String-int-">getInt(String, int)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-java.lang.String-"><code>RequestQuery.getString(String,String)</code></a> but converts the value to an integer.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/utils/PojoRest.html#getInt-java.lang.String-">getInt(String)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/PojoRest.html" title="class in org.apache.juneau.utils">PojoRest</a></dt>
 <dd>
 <div class="block">Returns the specified entry value converted to an <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang"><code>Integer</code></a>.</div>
@@ -9616,6 +9650,10 @@
 <dd>
 <div class="block">Returns the localized license information of this REST resource.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.html#getLimit--">getLimit()</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a></dt>
+<dd>
+<div class="block">The number of rows to return.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/parser/ParserReader.html#getLine--">getLine()</a></span> - Method in class org.apache.juneau.parser.<a href="org/apache/juneau/parser/ParserReader.html" title="class in org.apache.juneau.parser">ParserReader</a></dt>
 <dd>
 <div class="block">Returns the current line number position in this reader.</div>
@@ -10141,6 +10179,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/widget/PoweredByJuneauWidget.html#getName--">getName()</a></span> - Method in class org.apache.juneau.rest.widget.<a href="org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget">PoweredByJuneauWidget</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/widget/QueryWidget.html#getName--">getName()</a></span> - Method in class org.apache.juneau.rest.widget.<a href="org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget">QueryWidget</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/widget/Widget.html#getName--">getName()</a></span> - Method in class org.apache.juneau.rest.widget.<a href="org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a></dt>
 <dd>
 <div class="block">The widget key (i.e.</div>
@@ -10585,6 +10625,10 @@
 <dd>
 <div class="block">Returns the port that this microservice started up on.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.html#getPosition--">getPosition()</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a></dt>
+<dd>
+<div class="block">The first-row position.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestHeaders.html#getPragma--">getPragma()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></dt>
 <dd>
 <div class="block">Returns the <code>Pragma</code> header on the request.</div>
@@ -10769,7 +10813,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RestRequest.html#getQuery-java.lang.String-">getQuery(String)</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">Shortcut for calling <code>getQuery().getFirst(name)</code>.</div>
+<div class="block">Shortcut for calling <code>getQuery().getString(name)</code>.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/remoteable/RemoteableMethodMeta.html#getQueryArgs--">getQueryArgs()</a></span> - Method in class org.apache.juneau.remoteable.<a href="org/apache/juneau/remoteable/RemoteableMethodMeta.html" title="class in org.apache.juneau.remoteable">RemoteableMethodMeta</a></dt>
 <dd>
@@ -10791,6 +10835,15 @@
 <dd>
 <div class="block">Returns the <code>Range</code> header on the request.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/BeanMap.html#getRaw-java.lang.Object-">getRaw(Object)</a></span> - Method in class org.apache.juneau.<a href="org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/BeanMap.html#get-java.lang.Object-"><code>BeanMap.get(Object)</code></a> except bypasses the POJO filter associated with the bean property or
+   bean filter associated with the bean class.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/BeanPropertyMeta.html#getRaw-org.apache.juneau.BeanMap-java.lang.String-">getRaw(BeanMap&lt;?&gt;, String)</a></span> - Method in class org.apache.juneau.<a href="org/apache/juneau/BeanPropertyMeta.html" title="class in org.apache.juneau">BeanPropertyMeta</a></dt>
+<dd>
+<div class="block">Equivalent to calling <a href="org/apache/juneau/BeanMap.html#getRaw-java.lang.Object-"><code>BeanMap.getRaw(Object)</code></a>, but is faster since it avoids looking up the property meta.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/jena/RdfSerializerSession.html#getRdfLanguage--">getRdfLanguage()</a></span> - Method in class org.apache.juneau.jena.<a href="org/apache/juneau/jena/RdfSerializerSession.html" title="class in org.apache.juneau.jena">RdfSerializerSession</a></dt>
 <dd>
 <div class="block">Returns the <a href="org/apache/juneau/jena/RdfCommonContext.html#RDF_language"><code>RdfCommonContext.RDF_language</code></a> setting value for this session.</div>
@@ -11170,6 +11223,14 @@
 <dd>
 <div class="block">Bean property getter:  <property>scopes</property>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.html#getSearch--">getSearch()</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a></dt>
+<dd>
+<div class="block">The query search terms.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestQuery.html#getSearchArgs--">getSearchArgs()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a></dt>
+<dd>
+<div class="block">Locates the special search query arguments in the query and returns them as a <a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> object.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/ini/ConfigFile.html#getSection-java.lang.String-">getSection(String)</a></span> - Method in class org.apache.juneau.ini.<a href="org/apache/juneau/ini/ConfigFile.html" title="class in org.apache.juneau.ini">ConfigFile</a></dt>
 <dd>
 <div class="block">Gets the section with the specified name.</div>
@@ -11305,6 +11366,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/jaxrs/BaseProvider.html#getSize-java.lang.Object-java.lang.Class-java.lang.reflect.Type-java.lang.annotation.Annotation:A-javax.ws.rs.core.MediaType-">getSize(Object, Class&lt;?&gt;, Type, Annotation[], MediaType)</a></span> - Method in class org.apache.juneau.rest.jaxrs.<a href="org/apache/juneau/rest/jaxrs/BaseProvider.html" title="class in org.apache.juneau.rest.jaxrs">BaseProvider</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.html#getSort--">getSort()</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a></dt>
+<dd>
+<div class="block">The sort columns.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/dto/atom/Entry.html#getSource--">getSource()</a></span> - Method in class org.apache.juneau.dto.atom.<a href="org/apache/juneau/dto/atom/Entry.html" title="class in org.apache.juneau.dto.atom">Entry</a></dt>
 <dd>
 <div class="block">Returns the source of this entry.</div>
@@ -11353,6 +11418,30 @@
 <dd>
 <div class="block">Returns the specified entry value converted to a <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>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-">getString(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestFormData.html" title="class in org.apache.juneau.rest">RequestFormData</a></dt>
+<dd>
+<div class="block">Returns a form data parameter value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-java.lang.String-">getString(String, String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestFormData.html" title="class in org.apache.juneau.rest">RequestFormData</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestFormData.html#getString-java.lang.String-"><code>RequestFormData.getString(String)</code></a> except returns a default value if <jk>null</jk> or empty.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-">getString(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></dt>
+<dd>
+<div class="block">Returns the specified header value, or <jk>null</jk> if the header doesn't exist.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestHeaders.html#getString-java.lang.String-java.lang.String-">getString(String, String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></dt>
+<dd>
+<div class="block">Returns the specified header value, or a default value if the header doesn't exist.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-">getString(String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a></dt>
+<dd>
+<div class="block">Returns a query parameter value.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-java.lang.String-">getString(String, String)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a></dt>
+<dd>
+<div class="block">Same as <a href="org/apache/juneau/rest/RequestQuery.html#getString-java.lang.String-"><code>RequestQuery.getString(String)</code></a> but returns the specified default value if the query parameter was not specified.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/utils/MessageBundle.html#getString-java.lang.String-java.lang.Object...-">getString(String, Object...)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/MessageBundle.html" title="class in org.apache.juneau.utils">MessageBundle</a></dt>
 <dd>
 <div class="block">Similar to <a href="http://docs.oracle.com/javase/7/docs/api/java/util/ResourceBundle.html?is-external=true#getString-java.lang.String-" title="class or interface in java.util"><code>ResourceBundle.getString(String)</code></a> except allows you to pass in <a href="http://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html?is-external=true" title="class or interface in java.text"><code>MessageFormat</code></a> objects.</div>
@@ -11867,6 +11956,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html#getView--">getView()</a></span> - Method in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/DirectoryResource.FileResource.html" title="class in org.apache.juneau.microservice.resources">DirectoryResource.FileResource</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.html#getView--">getView()</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a></dt>
+<dd>
+<div class="block">The view columns.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestHeaders.html#getWarning--">getWarning()</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestHeaders.html" title="class in org.apache.juneau.rest">RequestHeaders</a></dt>
 <dd>
 <div class="block">Returns the <code>Warning</code> header on the request.</div>
@@ -12072,6 +12165,10 @@
 <div class="block">The main method for serializing POJOs passed in through the <a href="org/apache/juneau/rest/RestResponse.html#setOutput-java.lang.Object-"><code>RestResponse.setOutput(Object)</code></a> method or returned by
  the Java method.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/RequestQuery.html#hasAny-java.lang.String...-">hasAny(String...)</a></span> - Method in class org.apache.juneau.rest.<a href="org/apache/juneau/rest/RequestQuery.html" title="class in org.apache.juneau.rest">RequestQuery</a></dt>
+<dd>
+<div class="block">Returns <jk>true</jk> if the query parameters contains any of the specified names.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/utils/Args.html#hasArg-int-">hasArg(int)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/Args.html" title="class in org.apache.juneau.utils">Args</a></dt>
 <dd>
 <div class="block">Returns <jk>true</jk> if argument exists at specified index.</div>
@@ -13255,6 +13352,10 @@
 <dd>
 <div class="block">Constructor.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#ignoreCase-boolean-">ignoreCase(boolean)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
+<dd>
+<div class="block">Specifies whether case-insensitive search should be used.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/client/RestCall.html#ignoreErrors--">ignoreErrors()</a></span> - Method in class org.apache.juneau.rest.client.<a href="org/apache/juneau/rest/client/RestCall.html" title="class in org.apache.juneau.rest.client">RestCall</a></dt>
 <dd>
 <div class="block">Prevent <a href="org/apache/juneau/rest/client/RestCallException.html" title="class in org.apache.juneau.rest.client"><code>RestCallExceptions</code></a> from being thrown when HTTP status 400+ is encountered.</div>
@@ -13907,6 +14008,10 @@
 <div class="block">Returns the index position of the element in the specified array
    using the <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang"><code>String.equals(Object)</code></a> method.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/internal/StringUtils.html#indexOf-java.lang.String-char...-">indexOf(String, char...)</a></span> - Static method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/StringUtils.html" title="class in org.apache.juneau.internal">StringUtils</a></dt>
+<dd>
+<div class="block">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 mulitiple characters.</div>
+</dd>
 <dt><a href="org/apache/juneau/dto/swagger/Info.html" title="class in org.apache.juneau.dto.swagger"><span class="typeNameLink">Info</span></a> - Class in <a href="org/apache/juneau/dto/swagger/package-summary.html">org.apache.juneau.dto.swagger</a></dt>
 <dd>
 <div class="block">The object provides metadata about the API.</div>
@@ -14479,6 +14584,10 @@
 <dd>
 <div class="block">Returns <jk>true</jk> if we're serializing HTML.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.html#isIgnoreCase--">isIgnoreCase()</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils">SearchArgs</a></dt>
+<dd>
+<div class="block">The ignore-case flag.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/serializer/SerializerSession.html#isIgnoreRecursions--">isIgnoreRecursions()</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">Returns the <a href="org/apache/juneau/serializer/SerializerContext.html#SERIALIZER_ignoreRecursions"><code>SerializerContext.SERIALIZER_ignoreRecursions</code></a> setting value for this session.</div>
@@ -15418,6 +15527,10 @@
 <dd>
 <div class="block">Creates an <a href="org/apache/juneau/dto/swagger/License.html" title="class in org.apache.juneau.dto.swagger"><code>License</code></a> element with the specified <a href="org/apache/juneau/dto/swagger/License.html#name-java.lang.String-"><code>License.name(String)</code></a> attribute.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#limit-int-">limit(int)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
+<dd>
+<div class="block">Specifies the number of rows to return.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/LogParser.Entry.html#line">line</a></span> - Variable in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/LogParser.Entry.html" title="class in org.apache.juneau.microservice.resources">LogParser.Entry</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/utils/IOPipe.html#lineProcessor-org.apache.juneau.utils.IOPipe.LineProcessor-">lineProcessor(IOPipe.LineProcessor)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/IOPipe.html" title="class in org.apache.juneau.utils">IOPipe</a></dt>
@@ -18277,10 +18390,6 @@
 <dd>
 <div class="block">Parses the date value using the given date formats.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/PojoQuery.html#parseDate-java.lang.String-java.text.ParsePosition-">parseDate(String, ParsePosition)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/PojoQuery.html" title="class in org.apache.juneau.utils">PojoQuery</a></dt>
-<dd>
-<div class="block">Parses a timestamp string off the beginning of the string segment 'seg'.</div>
-</dd>
 <dt><a href="org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser"><span class="typeNameLink">ParseException</span></a> - Exception in <a href="org/apache/juneau/parser/package-summary.html">org.apache.juneau.parser</a></dt>
 <dd>
 <div class="block">Exception that indicates invalid syntax encountered during parsing.</div>
@@ -18729,7 +18838,7 @@
 </dd>
 <dt><a href="org/apache/juneau/utils/PojoQuery.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">PojoQuery</span></a> - Class in <a href="org/apache/juneau/utils/package-summary.html">org.apache.juneau.utils</a></dt>
 <dd>
-<div class="block">Designed to provide query/view/sort/paging filtering on tabular in-memory POJO models.</div>
+<div class="block">Designed to provide search/view/sort/paging filtering on tabular in-memory POJO models.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/utils/PojoQuery.html#PojoQuery-java.lang.Object-org.apache.juneau.BeanSession-">PojoQuery(Object, BeanSession)</a></span> - Constructor for class org.apache.juneau.utils.<a href="org/apache/juneau/utils/PojoQuery.html" title="class in org.apache.juneau.utils">PojoQuery</a></dt>
 <dd>
@@ -18909,6 +19018,10 @@
 <dd>
 <div class="block">Sets the URI port.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#position-int-">position(int)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
+<dd>
+<div class="block">Specifies the starting line number.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/utils/PojoRest.html#post-java.lang.String-java.lang.Object-">post(String, Object)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/PojoRest.html" title="class in org.apache.juneau.utils">PojoRest</a></dt>
 <dd>
 <div class="block">Adds a value to a list element in a POJO model.</div>
@@ -19590,6 +19703,12 @@
 <dd>
 <div class="block">Adds query parameters to the URI for any parameters that aren't null/empty.</div>
 </dd>
+<dt><a href="org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget"><span class="typeNameLink">QueryWidget</span></a> - Class in <a href="org/apache/juneau/rest/widget/package-summary.html">org.apache.juneau.rest.widget</a></dt>
+<dd>
+<div class="block">Adds a <code>QUERY</code> link to the page that allows you to perform search/view/sort/paging on the page data.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/widget/QueryWidget.html#QueryWidget--">QueryWidget()</a></span> - Constructor for class org.apache.juneau.rest.widget.<a href="org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget">QueryWidget</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/csv/CsvSerializerBuilder.html#quoteChar-char-">quoteChar(char)</a></span> - Method in class org.apache.juneau.csv.<a href="org/apache/juneau/csv/CsvSerializerBuilder.html" title="class in org.apache.juneau.csv">CsvSerializerBuilder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/html/HtmlSerializerBuilder.html#quoteChar-char-">quoteChar(char)</a></span> - Method in class org.apache.juneau.html.<a href="org/apache/juneau/html/HtmlSerializerBuilder.html" title="class in org.apache.juneau.html">HtmlSerializerBuilder</a></dt>
@@ -21190,6 +21309,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/widget/PoweredByJuneauWidget.html#resolve-org.apache.juneau.rest.RestRequest-">resolve(RestRequest)</a></span> - Method in class org.apache.juneau.rest.widget.<a href="org/apache/juneau/rest/widget/PoweredByJuneauWidget.html" title="class in org.apache.juneau.rest.widget">PoweredByJuneauWidget</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/rest/widget/QueryWidget.html#resolve-org.apache.juneau.rest.RestRequest-">resolve(RestRequest)</a></span> - Method in class org.apache.juneau.rest.widget.<a href="org/apache/juneau/rest/widget/QueryWidget.html" title="class in org.apache.juneau.rest.widget">QueryWidget</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/rest/widget/Widget.html#resolve-org.apache.juneau.rest.RestRequest-">resolve(RestRequest)</a></span> - Method in class org.apache.juneau.rest.widget.<a href="org/apache/juneau/rest/widget/Widget.html" title="class in org.apache.juneau.rest.widget">Widget</a></dt>
 <dd>
 <div class="block">Resolves the value for the variable.</div>
@@ -22052,6 +22173,22 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/dto/html5/Script.html#Script--">Script()</a></span> - Constructor for class org.apache.juneau.dto.html5.<a href="org/apache/juneau/dto/html5/Script.html" title="class in org.apache.juneau.dto.html5">Script</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#search-java.lang.String-">search(String)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
+<dd>
+<div class="block">Adds search terms to this builder.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#search-java.lang.String-java.lang.String-">search(String, String)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
+<dd>
+<div class="block">Adds a search term to this builder.</div>
+</dd>
+<dt><a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">SearchArgs</span></a> - Class in <a href="org/apache/juneau/utils/package-summary.html">org.apache.juneau.utils</a></dt>
+<dd>
+<div class="block">Encapsulates arguments for basic search/view/sort/position/limit functionality.</div>
+</dd>
+<dt><a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils"><span class="typeNameLink">SearchArgs.Builder</span></a> - Class in <a href="org/apache/juneau/utils/package-summary.html">org.apache.juneau.utils</a></dt>
+<dd>
+<div class="block">Builder for <a href="org/apache/juneau/utils/SearchArgs.html" title="class in org.apache.juneau.utils"><code>SearchArgs</code></a> class.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/internal/Pair.html#second--">second()</a></span> - Method in class org.apache.juneau.internal.<a href="org/apache/juneau/internal/Pair.html" title="class in org.apache.juneau.internal">Pair</a></dt>
 <dd>
 <div class="block">Returns the second object in the pair.</div>
@@ -24637,6 +24774,14 @@
 <dd>
 <div class="block">Sorts the specified collection if <a href="org/apache/juneau/serializer/SerializerSession.html#isSortCollections--"><code>SerializerSession.isSortCollections()</code></a> returns <jk>true</jk>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#sort-java.lang.String-">sort(String)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
+<dd>
+<div class="block">Specifies the sort arguments.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#sort-java.util.Collection-">sort(Collection&lt;String&gt;)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
+<dd>
+<div class="block">Specifies the sort arguments.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/csv/CsvSerializerBuilder.html#sortCollections-boolean-">sortCollections(boolean)</a></span> - Method in class org.apache.juneau.csv.<a href="org/apache/juneau/csv/CsvSerializerBuilder.html" title="class in org.apache.juneau.csv">CsvSerializerBuilder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/html/HtmlSerializerBuilder.html#sortCollections-boolean-">sortCollections(boolean)</a></span> - Method in class org.apache.juneau.html.<a href="org/apache/juneau/html/HtmlSerializerBuilder.html" title="class in org.apache.juneau.html">HtmlSerializerBuilder</a></dt>
@@ -28004,6 +28149,14 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/LogsResource.FileResource.html#view">view</a></span> - Variable in class org.apache.juneau.microservice.resources.<a href="org/apache/juneau/microservice/resources/LogsResource.FileResource.html" title="class in org.apache.juneau.microservice.resources">LogsResource.FileResource</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#view-java.lang.String-">view(String)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
+<dd>
+<div class="block">Specifies the list of columns to view.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/juneau/utils/SearchArgs.Builder.html#view-java.util.Collection-">view(Collection&lt;String&gt;)</a></span> - Method in class org.apache.juneau.utils.<a href="org/apache/juneau/utils/SearchArgs.Builder.html" title="class in org.apache.juneau.utils">SearchArgs.Builder</a></dt>
+<dd>
+<div class="block">Specifies the list of columns to view.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/juneau/microservice/resources/LogsResource.html#viewFile-org.apache.juneau.rest.RestRequest-org.apache.juneau.rest.RestResponse-java.lang.String-org.apache.juneau.ObjectMap-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String:A-java.lang.String:A-">viewFile(RestRequest, RestResponse, String, ObjectMap, boolean, String, String, String, String[], String[])</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>
 <div class="block">[VIEW /*] - Retrieve the contents of a log file.</div>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/BeanMap.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/BeanMap.html b/content/site/apidocs/org/apache/juneau/BeanMap.html
index fd73d3f..2448563 100644
--- a/content/site/apidocs/org/apache/juneau/BeanMap.html
+++ b/content/site/apidocs/org/apache/juneau/BeanMap.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -323,45 +323,52 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 </td>
 </tr>
 <tr id="i11" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanMap.html#getRaw-java.lang.Object-">getRaw</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;property)</code>
+<div class="block">Same as <a href="../../../org/apache/juneau/BeanMap.html#get-java.lang.Object-"><code>get(Object)</code></a> except bypasses the POJO filter associated with the bean property or
+   bean filter associated with the bean class.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../org/apache/juneau/BeanPropertyValue.html" title="class in org.apache.juneau">BeanPropertyValue</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanMap.html#getValues-boolean-org.apache.juneau.BeanPropertyValue...-">getValues</a></span>(boolean&nbsp;ignoreNulls,
          <a href="../../../org/apache/juneau/BeanPropertyValue.html" title="class in org.apache.juneau">BeanPropertyValue</a>...&nbsp;prependVals)</code>
 <div class="block">Invokes all the getters on this bean and return the values as a list of <a href="../../../org/apache/juneau/BeanPropertyValue.html" title="class in org.apache.juneau"><code>BeanPropertyValue</code></a> objects.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanMap.html#keySet--">keySet</a></span>()</code>
 <div class="block">Returns the names of all properties associated with the bean.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code><a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;<a href="../../../org/apache/juneau/BeanMap.html" title="type parameter in BeanMap">T</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanMap.html#load-java.util.Map-">load</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;entries)</code>
 <div class="block">Convenience method for loading this map with the contents of the specified map.</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code><a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;<a href="../../../org/apache/juneau/BeanMap.html" title="type parameter in BeanMap">T</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanMap.html#load-java.io.Reader-org.apache.juneau.parser.ReaderParser-">load</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;r,
     <a href="../../../org/apache/juneau/parser/ReaderParser.html" title="class in org.apache.juneau.parser">ReaderParser</a>&nbsp;p)</code>
 <div class="block">Convenience method for setting multiple property values by passing in a reader.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code><a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;<a href="../../../org/apache/juneau/BeanMap.html" title="type parameter in BeanMap">T</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanMap.html#load-java.lang.String-">load</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;input)</code>
 <div class="block">Convenience method for setting multiple property values by passing in JSON (or other) text.</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../org/apache/juneau/BeanMap.html#put-java.lang.String-java.lang.Object-">put</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;property,
    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value)</code>
 <div class="block">Sets a property on the bean.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" 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/BeanMap.html#resolveVars-java.lang.String-">resolveVars</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)</code>
 <div class="block">Given a string containing variables of the form <code>"{property}"</code>, replaces those variables with
@@ -667,13 +674,30 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 </dl>
 </li>
 </ul>
+<a name="getRaw-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getRaw</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.292">getRaw</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;property)</pre>
+<div class="block">Same as <a href="../../../org/apache/juneau/BeanMap.html#get-java.lang.Object-"><code>get(Object)</code></a> except bypasses the POJO filter associated with the bean property or
+   bean filter associated with the bean class.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>property</code> - The name of the property to get.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The raw property value.</dd>
+</dl>
+</li>
+</ul>
 <a name="load-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>load</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;<a href="../../../org/apache/juneau/BeanMap.html" title="type parameter in BeanMap">T</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.301">load</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;input)
+<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;<a href="../../../org/apache/juneau/BeanMap.html" title="type parameter in BeanMap">T</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.316">load</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;input)
                 throws <a href="../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</a></pre>
 <div class="block">Convenience method for setting multiple property values by passing in JSON (or other) text.
  <p>
@@ -701,7 +725,7 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 <ul class="blockList">
 <li class="blockList">
 <h4>load</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;<a href="../../../org/apache/juneau/BeanMap.html" title="type parameter in BeanMap">T</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.315">load</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;r,
+<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;<a href="../../../org/apache/juneau/BeanMap.html" title="type parameter in BeanMap">T</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.330">load</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html?is-external=true" title="class or interface in java.io">Reader</a>&nbsp;r,
                        <a href="../../../org/apache/juneau/parser/ReaderParser.html" title="class in org.apache.juneau.parser">ReaderParser</a>&nbsp;p)
                 throws <a href="../../../org/apache/juneau/parser/ParseException.html" title="class in org.apache.juneau.parser">ParseException</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>
@@ -724,7 +748,7 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 <ul class="blockList">
 <li class="blockList">
 <h4>load</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;<a href="../../../org/apache/juneau/BeanMap.html" title="type parameter in BeanMap">T</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.329">load</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>&nbsp;entries)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanMap.html" title="class in org.apache.juneau">BeanMap</a>&lt;<a href="../../../org/apache/juneau/BeanMap.html" title="type parameter in BeanMap">T</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.344">load</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>&nbsp;entries)</pre>
 <div class="block">Convenience method for loading this map with the contents of the specified map.
  <p>
  Identical to <a href="http://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html?is-external=true#putAll-java.util.Map-" title="class or interface in java.util"><code>AbstractMap.putAll(Map)</code></a> except as a fluent-style method.</div>
@@ -742,7 +766,7 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 <ul class="blockList">
 <li class="blockList">
 <h4>keySet</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.340">keySet</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.355">keySet</a>()</pre>
 <div class="block">Returns the names of all properties associated with the bean.
  <p>
  The returned set is unmodifiable.</div>
@@ -760,7 +784,7 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 <ul class="blockList">
 <li class="blockList">
 <h4>getProperty</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanMapEntry.html" title="class in org.apache.juneau">BeanMapEntry</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.368">getProperty</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyName)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanMapEntry.html" title="class in org.apache.juneau">BeanMapEntry</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.383">getProperty</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyName)</pre>
 <div class="block">Returns the specified property on this bean map.
  <p>
  Allows you to get and set an individual property on a bean without having a
@@ -783,7 +807,7 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 <ul class="blockList">
 <li class="blockList">
 <h4>getPropertyMeta</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanPropertyMeta.html" title="class in org.apache.juneau">BeanPropertyMeta</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.381">getPropertyMeta</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyName)</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanPropertyMeta.html" title="class in org.apache.juneau">BeanPropertyMeta</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.396">getPropertyMeta</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyName)</pre>
 <div class="block">Returns the metadata on the specified property.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -799,7 +823,7 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 <ul class="blockList">
 <li class="blockList">
 <h4>getClassMeta</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;<a href="../../../org/apache/juneau/BeanMap.html" title="type parameter in BeanMap">T</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.394">getClassMeta</a>()</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau">ClassMeta</a>&lt;<a href="../../../org/apache/juneau/BeanMap.html" title="type parameter in BeanMap">T</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.409">getClassMeta</a>()</pre>
 <div class="block">Returns the <a href="../../../org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau"><code>ClassMeta</code></a> of the wrapped bean.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -815,7 +839,7 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 <ul class="blockList">
 <li class="blockList">
 <h4>getValues</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../org/apache/juneau/BeanPropertyValue.html" title="class in org.apache.juneau">BeanPropertyValue</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.410">getValues</a>(boolean&nbsp;ignoreNulls,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../org/apache/juneau/BeanPropertyValue.html" title="class in org.apache.juneau">BeanPropertyValue</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.425">getValues</a>(boolean&nbsp;ignoreNulls,
                                          <a href="../../../org/apache/juneau/BeanPropertyValue.html" title="class in org.apache.juneau">BeanPropertyValue</a>...&nbsp;prependVals)</pre>
 <div class="block">Invokes all the getters on this bean and return the values as a list of <a href="../../../org/apache/juneau/BeanPropertyValue.html" title="class in org.apache.juneau"><code>BeanPropertyValue</code></a> objects.
  <p>
@@ -836,7 +860,7 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 <ul class="blockList">
 <li class="blockList">
 <h4>resolveVars</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.449">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>&nbsp;s)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.464">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>&nbsp;s)</pre>
 <div class="block">Given a string containing variables of the form <code>"{property}"</code>, replaces those variables with
  property values in this bean.</div>
 <dl>
@@ -853,7 +877,7 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 <ul class="blockList">
 <li class="blockList">
 <h4>getProperties</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../org/apache/juneau/BeanPropertyMeta.html" title="class in org.apache.juneau">BeanPropertyMeta</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.457">getProperties</a>()</pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../org/apache/juneau/BeanPropertyMeta.html" title="class in org.apache.juneau">BeanPropertyMeta</a>&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.472">getProperties</a>()</pre>
 <div class="block">Returns a simple collection of properties for this bean map.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -867,7 +891,7 @@ implements <a href="../../../org/apache/juneau/Delegate.html" title="interface i
 <ul class="blockListLast">
 <li class="blockList">
 <h4>entrySet</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.466">entrySet</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&gt;&nbsp;<a href="../../../src-html/org/apache/juneau/BeanMap.html#line.481">entrySet</a>()</pre>
 <div class="block">Returns all the properties associated with the bean.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/org/apache/juneau/BeanPropertyMeta.Builder.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/org/apache/juneau/BeanPropertyMeta.Builder.html b/content/site/apidocs/org/apache/juneau/BeanPropertyMeta.Builder.html
index b3c9680..554c6c7 100644
--- a/content/site/apidocs/org/apache/juneau/BeanPropertyMeta.Builder.html
+++ b/content/site/apidocs/org/apache/juneau/BeanPropertyMeta.Builder.html
@@ -215,7 +215,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>build</h4>
-<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanPropertyMeta.html" title="class in org.apache.juneau">BeanPropertyMeta</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.Builder.html#line.223">build</a>()</pre>
+<pre>public&nbsp;<a href="../../../org/apache/juneau/BeanPropertyMeta.html" title="class in org.apache.juneau">BeanPropertyMeta</a>&nbsp;<a href="../../../src-html/org/apache/juneau/BeanPropertyMeta.Builder.html#line.221">build</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>A new BeanPropertyMeta object using this builder.</dd>


[06/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/rest/RequestFormData.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RequestFormData.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RequestFormData.html
index c7d0716..bd36e44 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RequestFormData.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RequestFormData.html
@@ -102,7 +102,7 @@
 <span class="sourceLineNo">094</span>    * @param name The form data parameter name.<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    * @return The parameter value, or &lt;jk&gt;null&lt;/jk&gt; if parameter does not exist.<a name="line.95"></a>
 <span class="sourceLineNo">096</span>    */<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   public String getFirst(String name) {<a name="line.97"></a>
+<span class="sourceLineNo">097</span>   public String getString(String name) {<a name="line.97"></a>
 <span class="sourceLineNo">098</span>      String[] v = get(name);<a name="line.98"></a>
 <span class="sourceLineNo">099</span>      if (v == null || v.length == 0)<a name="line.99"></a>
 <span class="sourceLineNo">100</span>         return null;<a name="line.100"></a>
@@ -117,207 +117,251 @@
 <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>    * Same as {@link #getFirst(String)} except returns a default value if &lt;jk&gt;null&lt;/jk&gt; or empty.<a name="line.112"></a>
+<span class="sourceLineNo">112</span>    * Same as {@link #getString(String)} except returns a default value if &lt;jk&gt;null&lt;/jk&gt; or empty.<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    *<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    * @param name The form data parameter name.<a name="line.114"></a>
 <span class="sourceLineNo">115</span>    * @param def The default value.<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    * @return The parameter value, or the default value if &lt;jk&gt;null&lt;/jk&gt; or empty.<a name="line.116"></a>
+<span class="sourceLineNo">116</span>    * @return The parameter value, or the default value if parameter does not exist or is &lt;jk&gt;null&lt;/jk&gt; or empty.<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    */<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   public String getFirst(String name, String def) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      String s = getFirst(name);<a name="line.119"></a>
+<span class="sourceLineNo">118</span>   public String getString(String name, String def) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      String s = getString(name);<a name="line.119"></a>
 <span class="sourceLineNo">120</span>      return StringUtils.isEmpty(s) ? def : s;<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>   /**<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    * Returns the specified form data parameter value converted to a POJO using the<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    *    {@link UrlEncodingParser} registered with this servlet.<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    * &lt;p&gt;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    * &lt;p class='bcode'&gt;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    *    &lt;jc&gt;// Parse into an integer.&lt;/jc&gt;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    *    &lt;jk&gt;int&lt;/jk&gt; myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, &lt;jk&gt;int&lt;/jk&gt;.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    *<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    *    &lt;jc&gt;// Parse into an int array.&lt;/jc&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    *    &lt;jk&gt;int&lt;/jk&gt;[] myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, &lt;jk&gt;int&lt;/jk&gt;[].&lt;jk&gt;class&lt;/jk&gt;);<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>    *    &lt;jc&gt;// Parse into a bean.&lt;/jc&gt;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    *    MyBean myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, MyBean.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    *<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    *    &lt;jc&gt;// Parse into a linked-list of objects.&lt;/jc&gt;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    *    List myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    *<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    *    &lt;jc&gt;// Parse into a map of object keys/values.&lt;/jc&gt;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    *    Map myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    * &lt;/p&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    * &lt;p&gt;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    * &lt;h5 class='section'&gt;Notes:&lt;/h5&gt;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    * &lt;ul&gt;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    *    &lt;li&gt;Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by the underlying servlet API.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    * &lt;/ul&gt;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    *<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    * @param name The parameter name.<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    * @param type The class type to convert the parameter value to.<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    * @return The parameter value converted to the specified class type.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    * @throws ParseException<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    */<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   public &lt;T&gt; T get(String name, Class&lt;T&gt; type) throws ParseException {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      return parse(name, beanSession.getClassMeta(type));<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>    * Same as {@link #get(String, Class)} except returns a default value if not specified.<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    *<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    * @param name The parameter name.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    * @param def The default value if the parameter was not specified or is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    * @param type The class type to convert the parameter value to.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    * @return The parameter value converted to the specified class type.<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    * @throws ParseException<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    */<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   public &lt;T&gt; T get(String name, T def, Class&lt;T&gt; type) throws ParseException {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return parse(name, def, beanSession.getClassMeta(type));<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>   /**<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    * Same as {@link #get(String, Class)} except for use on multi-part parameters<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    *    (e.g. &lt;js&gt;"key=1&amp;amp;key=2&amp;amp;key=3"&lt;/js&gt; instead of &lt;js&gt;"key=(1,2,3)"&lt;/js&gt;)<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    * &lt;p&gt;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    * This method must only be called when parsing into classes of type Collection or array.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    *<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    * @param name The parameter name.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    * @param type The class type to convert the parameter value to.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    * @return The parameter value converted to the specified class type.<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    * @throws ParseException<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    */<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   public &lt;T&gt; T getAll(String name, Class&lt;T&gt; type) throws ParseException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      return parseAll(name, beanSession.getClassMeta(type));<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>    * Returns the specified form data parameter value converted to a POJO using the<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    *    {@link UrlEncodingParser} registered with this servlet.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    * &lt;p&gt;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    * &lt;h5 class='section'&gt;Notes:&lt;/h5&gt;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    * &lt;ul&gt;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    *    &lt;li&gt;Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by the underlying servlet API.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    *    &lt;li&gt;Use this method if you want to parse into a parameterized &lt;code&gt;Map&lt;/code&gt;/&lt;code&gt;Collection&lt;/code&gt; object.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    * &lt;/ul&gt;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    * &lt;p&gt;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    * &lt;p class='bcode'&gt;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    *    &lt;jc&gt;// Parse into a linked-list of strings.&lt;/jc&gt;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    *    List&amp;lt;String&amp;gt; myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    *<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    *    &lt;jc&gt;// Parse into a linked-list of linked-lists of strings.&lt;/jc&gt;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    *    List&amp;lt;List&amp;lt;String&amp;gt;&amp;gt; myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.205"></a>
+<span class="sourceLineNo">124</span>    * Same as {@link #getString(String)} but converts the value to an integer.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    *<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    * @param name The form data parameter name.<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    * @return The parameter value, or &lt;code&gt;0&lt;/code&gt; if parameter does not exist or is &lt;jk&gt;null&lt;/jk&gt; or empty.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   public int getInt(String name) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      return getInt(name, 0);<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>    * Same as {@link #getString(String,String)} but converts the value to an integer.<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    *<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    * @param name The form data parameter name.<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    * @param def The default value.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    * @return The parameter value, or the default value if parameter does not exist or is &lt;jk&gt;null&lt;/jk&gt; or empty.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   public int getInt(String name, int def) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      String s = getString(name);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      return StringUtils.isEmpty(s) ? def : Integer.parseInt(s);<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>    * Same as {@link #getString(String)} but converts the value to a boolean.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    *<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    * @param name The form data parameter name.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    * @return The parameter value, or &lt;jk&gt;false&lt;/jk&gt; if parameter does not exist or is &lt;jk&gt;null&lt;/jk&gt; or empty.<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    */<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   public boolean getBoolean(String name) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      return getBoolean(name, false);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   }<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>   /**<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    * Same as {@link #getString(String,String)} but converts the value to a boolean.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    *<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    * @param name The form data parameter name.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    * @param def The default value.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    * @return The parameter value, or the default value if parameter does not exist or is &lt;jk&gt;null&lt;/jk&gt; or empty.<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    */<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   public boolean getBoolean(String name, boolean def) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      String s = getString(name);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      return StringUtils.isEmpty(s) ? def : Boolean.parseBoolean(s);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   }<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>   /**<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    * Returns the specified form data parameter value converted to a POJO using the<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    *    {@link UrlEncodingParser} registered with this servlet.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    * &lt;p&gt;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    * &lt;p class='bcode'&gt;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    *    &lt;jc&gt;// Parse into an integer.&lt;/jc&gt;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    *    &lt;jk&gt;int&lt;/jk&gt; myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, &lt;jk&gt;int&lt;/jk&gt;.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    *<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    *    &lt;jc&gt;// Parse into an int array.&lt;/jc&gt;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    *    &lt;jk&gt;int&lt;/jk&gt;[] myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, &lt;jk&gt;int&lt;/jk&gt;[].&lt;jk&gt;class&lt;/jk&gt;);<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>    *    &lt;jc&gt;// Parse into a bean.&lt;/jc&gt;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    *    MyBean myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, MyBean.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    *<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    *    &lt;jc&gt;// Parse into a linked-list of objects.&lt;/jc&gt;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    *    List myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    *<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    *    &lt;jc&gt;// Parse into a map of object keys/values.&lt;/jc&gt;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    *    Map myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    * &lt;/p&gt;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    * &lt;p&gt;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    * &lt;h5 class='section'&gt;Notes:&lt;/h5&gt;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    * &lt;ul&gt;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    *    &lt;li&gt;Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by the underlying servlet API.<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    * &lt;/ul&gt;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    *<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    * @param name The parameter name.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    * @param type The class type to convert the parameter value to.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    * @return The parameter value converted to the specified class type.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    * @throws ParseException<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   public &lt;T&gt; T get(String name, Class&lt;T&gt; type) throws ParseException {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      return parse(name, beanSession.getClassMeta(type));<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>   /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    * Same as {@link #get(String, Class)} except returns a default value if not specified.<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    *<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    *    &lt;jc&gt;// Parse into a map of string keys/values.&lt;/jc&gt;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    *    Map&amp;lt;String,String&amp;gt; myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    *<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    *    &lt;jc&gt;// Parse into a map containing string keys and values of lists containing beans.&lt;/jc&gt;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    *    Map&amp;lt;String,List&amp;lt;MyBean&amp;gt;&amp;gt; myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;, List.&lt;jk&gt;class&lt;/jk&gt;, MyBean.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    * &lt;/p&gt;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    *<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    * @param name The parameter name.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    * @param type The type of object to create.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    * @return The parameter value converted to the specified class type.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    * @throws ParseException<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   public &lt;T&gt; T get(String name, Type type, Type...args) throws ParseException {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      return (T)parse(name, beanSession.getClassMeta(type, args));<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>    * Same as {@link #get(String, Type, Type...)} except for use on multi-part parameters<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    *    (e.g. &lt;js&gt;"key=1&amp;amp;key=2&amp;amp;key=3"&lt;/js&gt; instead of &lt;js&gt;"key=(1,2,3)"&lt;/js&gt;)<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    * &lt;p&gt;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    * This method must only be called when parsing into classes of type Collection or array.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    *<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    * @param name The parameter name.<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    * @param type The type of object to create.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    * @return The parameter value converted to the specified class type.<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    * @throws ParseException<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    */<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   public &lt;T&gt; T getAll(String name, Type type, Type...args) throws ParseException {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      return (T)parseAll(name, beanSession.getClassMeta(type, args));<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>   /* Workhorse method */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>   &lt;T&gt; T parse(String name, T def, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      String val = getFirst(name);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      if (val == null)<a name="line.249"></a>
-<span class="sourceLineNo">250</span>         return def;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      return parseValue(val, cm);<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>   /* Workhorse method */<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   &lt;T&gt; T parse(String name, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      String val = getFirst(name);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      if (cm.isPrimitive() &amp;&amp; (val == null || val.isEmpty()))<a name="line.257"></a>
-<span class="sourceLineNo">258</span>         return cm.getPrimitiveDefault();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      return parseValue(val, cm);<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>   /* Workhorse method */<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   @SuppressWarnings("rawtypes")<a name="line.263"></a>
-<span class="sourceLineNo">264</span>   &lt;T&gt; T parseAll(String name, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      String[] p = get(name);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      if (p == null)<a name="line.266"></a>
-<span class="sourceLineNo">267</span>         return null;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      if (cm.isArray()) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>         List c = new ArrayList();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>         for (int i = 0; i &lt; p.length; i++)<a name="line.270"></a>
-<span class="sourceLineNo">271</span>            c.add(parseValue(p[i], cm.getElementType()));<a name="line.271"></a>
-<span class="sourceLineNo">272</span>         return (T)toArray(c, cm.getElementType().getInnerClass());<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      } else if (cm.isCollection()) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>         try {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>            Collection c = (Collection)(cm.canCreateNewInstance() ? cm.newInstance() : new ObjectList());<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            for (int i = 0; i &lt; p.length; i++)<a name="line.276"></a>
-<span class="sourceLineNo">277</span>               c.add(parseValue(p[i], cm.getElementType()));<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            return (T)c;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>         } catch (ParseException e) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            throw e;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>         } catch (Exception e) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            // Typically an instantiation exception.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>            throw new ParseException(e);<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>      throw new ParseException("Invalid call to getParameters(String, ClassMeta).  Class type must be a Collection or array.");<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 &lt;T&gt; T parseValue(String val, ClassMeta&lt;T&gt; c) throws ParseException {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      return parser.parse(PartType.FORM_DATA, val, c);<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>    * Converts the form data parameters to a readable string.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    *<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    * @param sorted Sort the form data parameters by name.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    * @return A JSON string containing the contents of the form data parameters.<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    */<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   public String toString(boolean sorted) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      Map&lt;String,Object&gt; m = (sorted ? new TreeMap&lt;String,Object&gt;() : new LinkedHashMap&lt;String,Object&gt;());<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      for (Map.Entry&lt;String,String[]&gt; e : this.entrySet()) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>         String[] v = e.getValue();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>         m.put(e.getKey(), v.length == 1 ? v[0] : v);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return JsonSerializer.DEFAULT_LAX.toString(m);<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>   @Override /* Object */<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   public String toString() {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      return toString(false);<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">207</span>    * @param name The parameter name.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    * @param def The default value if the parameter was not specified or is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    * @param type The class type to convert the parameter value to.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    * @param &lt;T&gt; The class type to convert the parameter value to.<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    * @return The parameter value converted to the specified class type.<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    * @throws ParseException<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   public &lt;T&gt; T get(String name, T def, Class&lt;T&gt; type) throws ParseException {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return parse(name, def, beanSession.getClassMeta(type));<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 #get(String, Class)} except for use on multi-part parameters<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    *    (e.g. &lt;js&gt;"key=1&amp;amp;key=2&amp;amp;key=3"&lt;/js&gt; instead of &lt;js&gt;"key=(1,2,3)"&lt;/js&gt;)<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    * &lt;p&gt;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    * This method must only be called when parsing into classes of type Collection or array.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    *<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    * @param name The parameter name.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    * @param type The class type to convert the parameter value to.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    * @return The parameter value converted to the specified class type.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    * @throws ParseException<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    */<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   public &lt;T&gt; T getAll(String name, Class&lt;T&gt; type) throws ParseException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      return parseAll(name, beanSession.getClassMeta(type));<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>    * Returns the specified form data parameter value converted to a POJO using the<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    *    {@link UrlEncodingParser} registered with this servlet.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    * &lt;p&gt;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    * &lt;h5 class='section'&gt;Notes:&lt;/h5&gt;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    * &lt;ul&gt;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    *    &lt;li&gt;Calling this method on URL-Encoded FORM posts causes the body content to be loaded and parsed by the underlying servlet API.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    *    &lt;li&gt;Use this method if you want to parse into a parameterized &lt;code&gt;Map&lt;/code&gt;/&lt;code&gt;Collection&lt;/code&gt; object.<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    * &lt;/ul&gt;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    * &lt;p&gt;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    * &lt;p class='bcode'&gt;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    *    &lt;jc&gt;// Parse into a linked-list of strings.&lt;/jc&gt;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    *    List&amp;lt;String&amp;gt; myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    *<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    *    &lt;jc&gt;// Parse into a linked-list of linked-lists of strings.&lt;/jc&gt;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    *    List&amp;lt;List&amp;lt;String&amp;gt;&amp;gt; myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    *<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    *    &lt;jc&gt;// Parse into a map of string keys/values.&lt;/jc&gt;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    *    Map&amp;lt;String,String&amp;gt; myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    *<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    *    &lt;jc&gt;// Parse into a map containing string keys and values of lists containing beans.&lt;/jc&gt;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    *    Map&amp;lt;String,List&amp;lt;MyBean&amp;gt;&amp;gt; myparam = req.getFormDataParameter(&lt;js&gt;"myparam"&lt;/js&gt;, TreeMap.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;, List.&lt;jk&gt;class&lt;/jk&gt;, MyBean.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    * &lt;/p&gt;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    *<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    * @param name The parameter name.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    * @param type The type of object to create.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    * @return The parameter value converted to the specified class type.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    * @throws ParseException<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    */<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   public &lt;T&gt; T get(String name, Type type, Type...args) throws ParseException {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      return (T)parse(name, beanSession.getClassMeta(type, args));<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>   /**<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    * Same as {@link #get(String, Type, Type...)} except for use on multi-part parameters<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    *    (e.g. &lt;js&gt;"key=1&amp;amp;key=2&amp;amp;key=3"&lt;/js&gt; instead of &lt;js&gt;"key=(1,2,3)"&lt;/js&gt;)<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    * &lt;p&gt;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    * This method must only be called when parsing into classes of type Collection or array.<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    *<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    * @param name The parameter name.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    * @param type The type of object to create.<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    * @return The parameter value converted to the specified class type.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    * @throws ParseException<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   public &lt;T&gt; T getAll(String name, Type type, Type...args) throws ParseException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      return (T)parseAll(name, beanSession.getClassMeta(type, args));<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   }<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>   /* Workhorse method */<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   &lt;T&gt; T parse(String name, T def, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      String val = getString(name);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (val == null)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>         return def;<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      return parseValue(val, cm);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>   /* Workhorse method */<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   &lt;T&gt; T parse(String name, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      String val = getString(name);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      if (cm.isPrimitive() &amp;&amp; (val == null || val.isEmpty()))<a name="line.301"></a>
+<span class="sourceLineNo">302</span>         return cm.getPrimitiveDefault();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      return parseValue(val, cm);<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>   /* Workhorse method */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   @SuppressWarnings("rawtypes")<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   &lt;T&gt; T parseAll(String name, ClassMeta&lt;T&gt; cm) throws ParseException {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      String[] p = get(name);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      if (p == null)<a name="line.310"></a>
+<span class="sourceLineNo">311</span>         return null;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      if (cm.isArray()) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>         List c = new ArrayList();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>         for (int i = 0; i &lt; p.length; i++)<a name="line.314"></a>
+<span class="sourceLineNo">315</span>            c.add(parseValue(p[i], cm.getElementType()));<a name="line.315"></a>
+<span class="sourceLineNo">316</span>         return (T)toArray(c, cm.getElementType().getInnerClass());<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      } else if (cm.isCollection()) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>         try {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>            Collection c = (Collection)(cm.canCreateNewInstance() ? cm.newInstance() : new ObjectList());<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            for (int i = 0; i &lt; p.length; i++)<a name="line.320"></a>
+<span class="sourceLineNo">321</span>               c.add(parseValue(p[i], cm.getElementType()));<a name="line.321"></a>
+<span class="sourceLineNo">322</span>            return (T)c;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>         } catch (ParseException e) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>            throw e;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>         } catch (Exception e) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>            // Typically an instantiation exception.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            throw new ParseException(e);<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>      throw new ParseException("Invalid call to getParameters(String, ClassMeta).  Class type must be a Collection or array.");<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 &lt;T&gt; T parseValue(String val, ClassMeta&lt;T&gt; c) throws ParseException {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      return parser.parse(PartType.FORM_DATA, val, c);<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>    * Converts the form data parameters to a readable string.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    *<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    * @param sorted Sort the form data parameters by name.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    * @return A JSON string containing the contents of the form data parameters.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   public String toString(boolean sorted) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      Map&lt;String,Object&gt; m = (sorted ? new TreeMap&lt;String,Object&gt;() : new LinkedHashMap&lt;String,Object&gt;());<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      for (Map.Entry&lt;String,String[]&gt; e : this.entrySet()) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>         String[] v = e.getValue();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>         m.put(e.getKey(), v.length == 1 ? v[0] : v);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      return JsonSerializer.DEFAULT_LAX.toString(m);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   }<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>   @Override /* Object */<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   public String toString() {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      return toString(false);<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>
 
 
 


[05/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/rest/RequestHeaders.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/rest/RequestHeaders.html b/content/site/apidocs/src-html/org/apache/juneau/rest/RequestHeaders.html
index fea687b..35f6ab6 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/rest/RequestHeaders.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/rest/RequestHeaders.html
@@ -112,7 +112,7 @@
 <span class="sourceLineNo">104</span>    * @param name The header name.<a name="line.104"></a>
 <span class="sourceLineNo">105</span>    * @return The header value, or &lt;jk&gt;null&lt;/jk&gt; if it doesn't exist.<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    */<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   public String getFirst(String name) {<a name="line.107"></a>
+<span class="sourceLineNo">107</span>   public String getString(String name) {<a name="line.107"></a>
 <span class="sourceLineNo">108</span>      String[] v = null;<a name="line.108"></a>
 <span class="sourceLineNo">109</span>      if (queryParams != null)<a name="line.109"></a>
 <span class="sourceLineNo">110</span>         v = queryParams.get(name);<a name="line.110"></a>
@@ -132,601 +132,645 @@
 <span class="sourceLineNo">124</span>    * @param def The default value to return if the header value isn't found.<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    * @return The header value, or the default value if the header isn't present.<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    */<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   public String getFirst(String name, String def) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      String s = getFirst(name);<a name="line.128"></a>
+<span class="sourceLineNo">127</span>   public String getString(String name, String def) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      String s = getString(name);<a name="line.128"></a>
 <span class="sourceLineNo">129</span>      return StringUtils.isEmpty(s) ? def : s;<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>    * Sets a request header value.<a name="line.133"></a>
+<span class="sourceLineNo">133</span>    * Same as {@link #getString(String)} but converts the value to an integer.<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    *<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    * @param name The header name.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    * @param value The header value.<a name="line.136"></a>
+<span class="sourceLineNo">135</span>    * @param name The HTTP header name.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    * @return The header value, or the default value if the header isn't present.<a name="line.136"></a>
 <span class="sourceLineNo">137</span>    */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   public void put(String name, Object value) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      super.put(name, new String[]{StringUtils.toString(value)});<a name="line.139"></a>
+<span class="sourceLineNo">138</span>   public int getInt(String name) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      return getInt(name, 0);<a name="line.139"></a>
 <span class="sourceLineNo">140</span>   }<a name="line.140"></a>
 <span class="sourceLineNo">141</span><a name="line.141"></a>
 <span class="sourceLineNo">142</span>   /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    * Returns the specified header value converted to a POJO.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    * &lt;p&gt;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    * The type can be any POJO type convertable from a &lt;code&gt;String&lt;/code&gt;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    * (See &lt;a class="doclink" href="package-summary.html#PojosConvertableFromString"&gt;POJOs Convertable From Strings&lt;/a&gt;).<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    * &lt;p&gt;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    * &lt;p class='bcode'&gt;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    *    &lt;jc&gt;// Parse into an integer.&lt;/jc&gt;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    *    &lt;jk&gt;int&lt;/jk&gt; myheader = req.getHeader(&lt;js&gt;"My-Header"&lt;/js&gt;, &lt;jk&gt;int&lt;/jk&gt;.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    *<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    *    &lt;jc&gt;// Parse a UUID.&lt;/jc&gt;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    *    UUID myheader = req.getHeader(&lt;js&gt;"My-Header"&lt;/js&gt;, UUID.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    * &lt;/p&gt;<a name="line.155"></a>
+<span class="sourceLineNo">143</span>    * Same as {@link #getString(String,String)} but converts the value to an integer.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    *<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    * @param name The HTTP header name.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    * @param def The default value to return if the header value isn't found.<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    * @return The header value, or the default value if the header isn't present.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    */<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   public int getInt(String name, int def) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      String s = getString(name);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      return StringUtils.isEmpty(s) ? def : Integer.parseInt(s);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>   /**<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    * Same as {@link #getString(String)} but converts the value to a boolean.<a name="line.155"></a>
 <span class="sourceLineNo">156</span>    *<a name="line.156"></a>
 <span class="sourceLineNo">157</span>    * @param name The HTTP header name.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    * @param type The class type to convert the header value to.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    * @param &lt;T&gt; The class type to convert the header value to.<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    * @return The parameter value converted to the specified class type.<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   public &lt;T&gt; T get(String name, Class&lt;T&gt; type) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      String h = getFirst(name);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      return beanSession.convertToType(h, type);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>   /**<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    * Same as {@link #get(String, Class)} but returns a default value if not found.<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    *<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    * @param name The HTTP header name.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    * @param def The default value if the header was not specified or is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    * @param type The class type to convert the header value to.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    * @param &lt;T&gt; The class type to convert the header value to.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    * @return The parameter value converted to the specified class type.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   public &lt;T&gt; T get(String name, T def, Class&lt;T&gt; type) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      String h = getFirst(name);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      if (h == null)<a name="line.178"></a>
-<span class="sourceLineNo">179</span>         return def;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      return beanSession.convertToType(h, type);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   }<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>   /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    * Returns the specified header value converted to a POJO.<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    * &lt;p&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    * The type can be any POJO type convertable from a &lt;code&gt;String&lt;/code&gt;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    * (See &lt;a class="doclink" href="package-summary.html#PojosConvertableFromString"&gt;POJOs Convertable From Strings&lt;/a&gt;).<a name="line.187"></a>
+<span class="sourceLineNo">158</span>    * @return The header value, or the default value if the header isn't present.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    */<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   public boolean getBoolean(String name) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      return getBoolean(name, false);<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>    * Same as {@link #getString(String,String)} but converts the value to a boolean.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    *<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    * @param name The HTTP header name.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    * @param def The default value to return if the header value isn't found.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    * @return The header value, or the default value if the header isn't present.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   public boolean getBoolean(String name, boolean def) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      String s = getString(name);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      return StringUtils.isEmpty(s) ? def : Boolean.parseBoolean(s);<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>   /**<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    * Sets a request header value.<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    *<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    * @param name The header name.<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    * @param value The header value.<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    */<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   public void put(String name, Object value) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      super.put(name, new String[]{StringUtils.toString(value)});<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>   /**<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    * Returns the specified header value converted to a POJO.<a name="line.187"></a>
 <span class="sourceLineNo">188</span>    * &lt;p&gt;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    * &lt;p class='bcode'&gt;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    *    &lt;jc&gt;// Parse into a linked-list of strings.&lt;/jc&gt;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    *    List&amp;lt;String&amp;gt; myheader = req.getHeader(&lt;js&gt;"My-Header"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    * &lt;/p&gt;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    *<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    * @param name The HTTP header name.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    * @param type The type of object to create.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    * @param &lt;T&gt; The class type to convert the header value to.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    * @return The parameter value converted to the specified class type.<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    * @throws ParseException If the header could not be converted to the specified type.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    */<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   @SuppressWarnings("unchecked")<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   public &lt;T&gt; T get(String name, Type type, Type...args) throws ParseException {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      String h = getFirst(name);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      return (T)parser.parse(PartType.HEADER, h, beanSession.getClassMeta(type, args));<a name="line.208"></a>
+<span class="sourceLineNo">189</span>    * The type can be any POJO type convertable from a &lt;code&gt;String&lt;/code&gt;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    * (See &lt;a class="doclink" href="package-summary.html#PojosConvertableFromString"&gt;POJOs Convertable From Strings&lt;/a&gt;).<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    * &lt;p&gt;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    * &lt;p class='bcode'&gt;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    *    &lt;jc&gt;// Parse into an integer.&lt;/jc&gt;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    *    &lt;jk&gt;int&lt;/jk&gt; myheader = req.getHeader(&lt;js&gt;"My-Header"&lt;/js&gt;, &lt;jk&gt;int&lt;/jk&gt;.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    *<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    *    &lt;jc&gt;// Parse a UUID.&lt;/jc&gt;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    *    UUID myheader = req.getHeader(&lt;js&gt;"My-Header"&lt;/js&gt;, UUID.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    * &lt;/p&gt;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    *<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    * @param name The HTTP header name.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    * @param type The class type to convert the header value to.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    * @param &lt;T&gt; The class type to convert the header value to.<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    * @return The parameter value converted to the specified class type.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    */<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   public &lt;T&gt; T get(String name, Class&lt;T&gt; type) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      String h = getString(name);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      return beanSession.convertToType(h, type);<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 copy of this object, but only with the specified header names copied.<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    * @param headers The headers to include in the copy.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    * @return A new headers object.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    */<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   public RequestHeaders subset(String...headers) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      RequestHeaders rh2 = new RequestHeaders().setParser(parser).setBeanSession(beanSession).setQueryParams(queryParams);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      for (String h : headers)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>         if (containsKey(h))<a name="line.219"></a>
-<span class="sourceLineNo">220</span>            rh2.put(h, get(h));<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      return rh2;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>   /**<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    * Same as {@link #subset(String...)}, but allows you to specify header names as a comma-delimited list.<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    * @param headers The headers to include in the copy.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    * @return A new headers object.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   public RequestHeaders subset(String headers) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      return subset(split(headers, ','));<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>    * Returns the &lt;code&gt;Accept&lt;/code&gt; header on the request.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    * &lt;p&gt;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    * Content-Types that are acceptable for the response.<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    *<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    * &lt;p class='bcode'&gt;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    *    Accept: text/plain<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    * &lt;/p&gt;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    *<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    * @return The parsed &lt;code&gt;Accept&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<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>   public Accept getAccept() {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      return Accept.forString(getFirst("Accept"));<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>    * Returns the &lt;code&gt;Accept-Charset&lt;/code&gt; header on the request.<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    * &lt;p&gt;<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    * Character sets that are acceptable.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    *<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    * &lt;p class='bcode'&gt;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    *    Accept-Charset: utf-8<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    * &lt;/p&gt;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    *<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    * @return The parsed &lt;code&gt;Accept-Charset&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   public AcceptCharset getAcceptCharset() {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      return AcceptCharset.forString(getFirst("Accept-Charset"));<a name="line.263"></a>
-<span class="sourceLineNo">264</span>   }<a name="line.264"></a>
-<span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>   /**<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    * Returns the &lt;code&gt;Accept-Encoding&lt;/code&gt; header on the request.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    * &lt;p&gt;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    * List of acceptable encodings.<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    *<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    * &lt;p class='bcode'&gt;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    *    Accept-Encoding: gzip, deflate<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    * &lt;/p&gt;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    *<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    * @return The parsed &lt;code&gt;Accept-Encoding&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    */<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   public AcceptEncoding getAcceptEncoding() {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      return AcceptEncoding.forString(getFirst("Accept-Encoding"));<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   }<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>   /**<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    * Returns the &lt;code&gt;Accept-Language&lt;/code&gt; header on the request.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    * &lt;p&gt;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    * List of acceptable human languages for response.<a name="line.285"></a>
+<span class="sourceLineNo">212</span>    * Same as {@link #get(String, Class)} but returns a default value if not found.<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    *<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    * @param name The HTTP header name.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    * @param def The default value if the header was not specified or is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    * @param type The class type to convert the header value to.<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    * @param &lt;T&gt; The class type to convert the header value to.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    * @return The parameter value converted to the specified class type.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    */<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   public &lt;T&gt; T get(String name, T def, Class&lt;T&gt; type) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      String h = getString(name);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      if (h == null)<a name="line.222"></a>
+<span class="sourceLineNo">223</span>         return def;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      return beanSession.convertToType(h, type);<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>    * Returns the specified header value converted to a POJO.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    * &lt;p&gt;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    * The type can be any POJO type convertable from a &lt;code&gt;String&lt;/code&gt;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    * (See &lt;a class="doclink" href="package-summary.html#PojosConvertableFromString"&gt;POJOs Convertable From Strings&lt;/a&gt;).<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    * &lt;p&gt;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    * &lt;p class='bcode'&gt;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    *    &lt;jc&gt;// Parse into a linked-list of strings.&lt;/jc&gt;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    *    List&amp;lt;String&amp;gt; myheader = req.getHeader(&lt;js&gt;"My-Header"&lt;/js&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    * &lt;/p&gt;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    *<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    * @param name The HTTP header name.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    * @param type The type of object to create.<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    * @param &lt;T&gt; The class type to convert the header value to.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    * @return The parameter value converted to the specified class type.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    * @throws ParseException If the header could not be converted to the specified type.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    */<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   @SuppressWarnings("unchecked")<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   public &lt;T&gt; T get(String name, Type type, Type...args) throws ParseException {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      String h = getString(name);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return (T)parser.parse(PartType.HEADER, h, beanSession.getClassMeta(type, args));<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>    * Returns a copy of this object, but only with the specified header names copied.<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    * @param headers The headers to include in the copy.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    * @return A new headers object.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    */<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   public RequestHeaders subset(String...headers) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      RequestHeaders rh2 = new RequestHeaders().setParser(parser).setBeanSession(beanSession).setQueryParams(queryParams);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      for (String h : headers)<a name="line.262"></a>
+<span class="sourceLineNo">263</span>         if (containsKey(h))<a name="line.263"></a>
+<span class="sourceLineNo">264</span>            rh2.put(h, get(h));<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      return rh2;<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>    * Same as {@link #subset(String...)}, but allows you to specify header names as a comma-delimited list.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    * @param headers The headers to include in the copy.<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    * @return A new headers object.<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    */<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   public RequestHeaders subset(String headers) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      return subset(split(headers, ','));<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>   /**<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    * Returns the &lt;code&gt;Accept&lt;/code&gt; header on the request.<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    * &lt;p&gt;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    * Content-Types that are acceptable for the response.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    *<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    * &lt;p class='bcode'&gt;<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    *    Accept: text/plain<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    * &lt;/p&gt;<a name="line.285"></a>
 <span class="sourceLineNo">286</span>    *<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    * &lt;p class='bcode'&gt;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    *    Accept-Language: en-US<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    * &lt;/p&gt;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    *<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    * @return The parsed &lt;code&gt;Accept-Language&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    */<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   public AcceptLanguage getAcceptLanguage() {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      return AcceptLanguage.forString(getFirst("Accept-Language"));<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>   /**<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    * Returns the &lt;code&gt;Authorization&lt;/code&gt; header on the request.<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    * &lt;p&gt;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    * Authentication credentials for HTTP authentication.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    *<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    * &lt;p class='bcode'&gt;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    *    Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    * &lt;/p&gt;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    *<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    * @return The parsed &lt;code&gt;Authorization&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    */<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   public Authorization getAuthorization() {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      return Authorization.forString(getFirst("Authorization"));<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>   /**<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    * Returns the &lt;code&gt;Cache-Control&lt;/code&gt; header on the request.<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    * &lt;p&gt;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    * Used to specify directives that must be obeyed by all caching mechanisms along the request-response chain.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    *<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    * &lt;p class='bcode'&gt;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    *    Cache-Control: no-cache<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    * &lt;/p&gt;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    *<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    * @return The parsed &lt;code&gt;Cache-Control&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    */<a name="line.325"></a>
-<span class="sourceLineNo">326</span>   public CacheControl getCacheControl() {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      return CacheControl.forString(getFirst("Cache-Control"));<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>   /**<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    * Returns the &lt;code&gt;Connection&lt;/code&gt; header on the request.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    * &lt;p&gt;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    * Control options for the current connection and list of hop-by-hop request fields.<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    *<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    * &lt;p class='bcode'&gt;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    *    Connection: keep-alive<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    *    Connection: Upgrade<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    * &lt;/p&gt;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    *<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    * @return The parsed &lt;code&gt;&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   public Connection getConnection() {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      return Connection.forString(getFirst("Connection"));<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   }<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>   /**<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    * Returns the &lt;code&gt;Content-Length&lt;/code&gt; header on the request.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    * &lt;p&gt;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    * The length of the request body in octets (8-bit bytes).<a name="line.350"></a>
+<span class="sourceLineNo">287</span>    * @return The parsed &lt;code&gt;Accept&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    *<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   public Accept getAccept() {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      return Accept.forString(getString("Accept"));<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>   /**<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    * Returns the &lt;code&gt;Accept-Charset&lt;/code&gt; header on the request.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    * &lt;p&gt;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    * Character sets that are acceptable.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    *<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    * &lt;p class='bcode'&gt;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    *    Accept-Charset: utf-8<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    * &lt;/p&gt;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    *<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    * @return The parsed &lt;code&gt;Accept-Charset&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    */<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   public AcceptCharset getAcceptCharset() {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      return AcceptCharset.forString(getString("Accept-Charset"));<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>   /**<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    * Returns the &lt;code&gt;Accept-Encoding&lt;/code&gt; header on the request.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    * &lt;p&gt;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    * List of acceptable encodings.<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    *<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    * &lt;p class='bcode'&gt;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    *    Accept-Encoding: gzip, deflate<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    * &lt;/p&gt;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    *<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    * @return The parsed &lt;code&gt;Accept-Encoding&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    */<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   public AcceptEncoding getAcceptEncoding() {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      return AcceptEncoding.forString(getString("Accept-Encoding"));<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>   /**<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    * Returns the &lt;code&gt;Accept-Language&lt;/code&gt; header on the request.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    * &lt;p&gt;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    * List of acceptable human languages for response.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    *<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    * &lt;p class='bcode'&gt;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    *    Accept-Language: en-US<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    * &lt;/p&gt;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    *<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    * @return The parsed &lt;code&gt;Accept-Language&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    */<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   public AcceptLanguage getAcceptLanguage() {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      return AcceptLanguage.forString(getString("Accept-Language"));<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>   /**<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    * Returns the &lt;code&gt;Authorization&lt;/code&gt; header on the request.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    * &lt;p&gt;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    * Authentication credentials for HTTP authentication.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    *<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    * &lt;p class='bcode'&gt;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    *    Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    * &lt;/p&gt;<a name="line.350"></a>
 <span class="sourceLineNo">351</span>    *<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    * &lt;p class='bcode'&gt;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    *    Content-Length: 348<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    * &lt;/p&gt;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    *<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    * @return The parsed &lt;code&gt;Content-Length&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    */<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   public ContentLength getContentLength() {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      return ContentLength.forString(getFirst("Content-Length"));<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 &lt;code&gt;Content-Type&lt;/code&gt; header on the request.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    * &lt;p&gt;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    * The MIME type of the body of the request (used with POST and PUT requests).<a name="line.366"></a>
+<span class="sourceLineNo">352</span>    * @return The parsed &lt;code&gt;Authorization&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    */<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   public Authorization getAuthorization() {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      return Authorization.forString(getString("Authorization"));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>   /**<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    * Returns the &lt;code&gt;Cache-Control&lt;/code&gt; header on the request.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    * &lt;p&gt;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    * Used to specify directives that must be obeyed by all caching mechanisms along the request-response chain.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    *<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    * &lt;p class='bcode'&gt;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    *    Cache-Control: no-cache<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    * &lt;/p&gt;<a name="line.366"></a>
 <span class="sourceLineNo">367</span>    *<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    * &lt;p class='bcode'&gt;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    *    Content-Type: application/x-www-form-urlencoded<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    * &lt;/p&gt;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    *<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    * @return The parsed &lt;code&gt;Content-Type&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   public ContentType getContentType() {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      return ContentType.forString(getFirst("Content-Type"));<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   }<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>   /**<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    * Returns the &lt;code&gt;Date&lt;/code&gt; header on the request.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    * &lt;p&gt;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    * The date and time that the message was originated (in "HTTP-date" format as defined by RFC 7231 Date/Time Formats).<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    *<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    * &lt;p class='bcode'&gt;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    *    Date: Tue, 15 Nov 1994 08:12:31 GMT<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    * &lt;/p&gt;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    *<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    * @return The parsed &lt;code&gt;Date&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   public Date getDate() {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      return Date.forString(getFirst("Date"));<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   }<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>    * Returns the &lt;code&gt;Expect&lt;/code&gt; header on the request.<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    * &lt;p&gt;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    * Indicates that particular server behaviors are required by the client.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    *<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    * &lt;p class='bcode'&gt;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    *    Expect: 100-continue<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    * &lt;/p&gt;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    *<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    * @return The parsed &lt;code&gt;Expect&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>   public Expect getExpect() {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      return Expect.forString(getFirst("Expect"));<a name="line.408"></a>
-<span class="sourceLineNo">409</span>   }<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>    * Returns the &lt;code&gt;From&lt;/code&gt; header on the request.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    * &lt;p&gt;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    * The email address of the user making the request.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    *<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    * &lt;p class='bcode'&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    *    From: user@example.com<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    * &lt;/p&gt;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    *<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    * @return The parsed &lt;code&gt;From&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    */<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   public From getFrom() {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      return From.forString(getFirst("From"));<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>    * Returns the &lt;code&gt;Host&lt;/code&gt; header on the request.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    * &lt;p&gt;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    * The domain name of the server (for virtual hosting), and the TCP port number on which the server is listening.<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    * The port number may be omitted if the port is the standard port for the service requested.<a name="line.431"></a>
+<span class="sourceLineNo">368</span>    * @return The parsed &lt;code&gt;Cache-Control&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    */<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   public CacheControl getCacheControl() {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      return CacheControl.forString(getString("Cache-Control"));<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>    * Returns the &lt;code&gt;Connection&lt;/code&gt; header on the request.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    * &lt;p&gt;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    * Control options for the current connection and list of hop-by-hop request fields.<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    *<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    * &lt;p class='bcode'&gt;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    *    Connection: keep-alive<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    *    Connection: Upgrade<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    * &lt;/p&gt;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    *<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    * @return The parsed &lt;code&gt;&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    */<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   public Connection getConnection() {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      return Connection.forString(getString("Connection"));<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   }<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>   /**<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    * Returns the &lt;code&gt;Content-Length&lt;/code&gt; header on the request.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    * &lt;p&gt;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    * The length of the request body in octets (8-bit bytes).<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    *<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    * &lt;p class='bcode'&gt;<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    *    Content-Length: 348<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    * &lt;/p&gt;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    *<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    * @return The parsed &lt;code&gt;Content-Length&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   public ContentLength getContentLength() {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      return ContentLength.forString(getString("Content-Length"));<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>   /**<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    * Returns the &lt;code&gt;Content-Type&lt;/code&gt; header on the request.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    * &lt;p&gt;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    * The MIME type of the body of the request (used with POST and PUT requests).<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    *<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    * &lt;p class='bcode'&gt;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    *    Content-Type: application/x-www-form-urlencoded<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    * &lt;/p&gt;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    *<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    * @return The parsed &lt;code&gt;Content-Type&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    */<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   public ContentType getContentType() {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      return ContentType.forString(getString("Content-Type"));<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>    * Returns the &lt;code&gt;Date&lt;/code&gt; header on the request.<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    * &lt;p&gt;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    * The date and time that the message was originated (in "HTTP-date" format as defined by RFC 7231 Date/Time Formats).<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    *<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    * &lt;p class='bcode'&gt;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    *    Date: Tue, 15 Nov 1994 08:12:31 GMT<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    * &lt;/p&gt;<a name="line.431"></a>
 <span class="sourceLineNo">432</span>    *<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    * &lt;p class='bcode'&gt;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    *    Host: en.wikipedia.org:8080<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    *    Host: en.wikipedia.org<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    * &lt;/p&gt;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    *<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    * @return The parsed &lt;code&gt;Host&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   public Host getHost() {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      return Host.forString(getFirst("Host"));<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 &lt;code&gt;If-Match&lt;/code&gt; header on the request.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    * &lt;p&gt;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    * Only perform the action if the client supplied entity matches the same entity on the server.<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    * This is mainly for methods like PUT to only update a resource if it has not been modified since the user last updated it.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    *<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    * &lt;p class='bcode'&gt;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    *    If-Match: "737060cd8c284d8af7ad3082f209582d"<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    * &lt;/p&gt;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    *<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    * @return The parsed &lt;code&gt;If-Match&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   public IfMatch getIfMatch() {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      return IfMatch.forString(getFirst("If-Match"));<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>   /**<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    * Returns the &lt;code&gt;If-Modified-Since&lt;/code&gt; header on the request.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    * &lt;p&gt;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    * Allows a 304 Not Modified to be returned if content is unchanged.<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    *<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    * &lt;p class='bcode'&gt;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    *    If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    * &lt;/p&gt;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    *<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    * @return The parsed &lt;code&gt;If-Modified-Since&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    */<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   public IfModifiedSince getIfModifiedSince() {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      return IfModifiedSince.forString(getFirst("If-Modified-Since"));<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>   /**<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    * Returns the &lt;code&gt;If-None-Match&lt;/code&gt; header on the request.<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    * &lt;p&gt;<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    * Allows a 304 Not Modified to be returned if content is unchanged, see HTTP ETag.<a name="line.481"></a>
+<span class="sourceLineNo">433</span>    * @return The parsed &lt;code&gt;Date&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    */<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   public Date getDate() {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      return Date.forString(getString("Date"));<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>    * Returns the &lt;code&gt;Expect&lt;/code&gt; header on the request.<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    * &lt;p&gt;<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    * Indicates that particular server behaviors are required by the client.<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    *<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    * &lt;p class='bcode'&gt;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    *    Expect: 100-continue<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    * &lt;/p&gt;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    *<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    * @return The parsed &lt;code&gt;Expect&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    */<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   public Expect getExpect() {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      return Expect.forString(getString("Expect"));<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>    * Returns the &lt;code&gt;From&lt;/code&gt; header on the request.<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    * &lt;p&gt;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    * The email address of the user making the request.<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    *<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    * &lt;p class='bcode'&gt;<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    *    From: user@example.com<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    * &lt;/p&gt;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    *<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    * @return The parsed &lt;code&gt;From&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    */<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   public From getFrom() {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      return From.forString(getString("From"));<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   }<a name="line.469"></a>
+<span class="sourceLineNo">470</span><a name="line.470"></a>
+<span class="sourceLineNo">471</span>   /**<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    * Returns the &lt;code&gt;Host&lt;/code&gt; header on the request.<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    * &lt;p&gt;<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    * The domain name of the server (for virtual hosting), and the TCP port number on which the server is listening.<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    * The port number may be omitted if the port is the standard port for the service requested.<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    *<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    * &lt;p class='bcode'&gt;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    *    Host: en.wikipedia.org:8080<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    *    Host: en.wikipedia.org<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    * &lt;/p&gt;<a name="line.481"></a>
 <span class="sourceLineNo">482</span>    *<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    * &lt;p class='bcode'&gt;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    *    If-None-Match: "737060cd8c284d8af7ad3082f209582d"<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    * &lt;/p&gt;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    *<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    * @return The parsed &lt;code&gt;If-None-Match&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   public IfNoneMatch getIfNoneMatch() {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      return IfNoneMatch.forString(getFirst("If-None-Match"));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   }<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>   /**<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    * Returns the &lt;code&gt;If-Range&lt;/code&gt; header on the request.<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    * &lt;p&gt;<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    * If the entity is unchanged, send me the part(s) that I am missing; otherwise, send me the entire new entity.<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    *<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    * &lt;p class='bcode'&gt;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    *    If-Range: "737060cd8c284d8af7ad3082f209582d"<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    * &lt;/p&gt;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    *<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    * @return The parsed &lt;code&gt;If-Range&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    */<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   public IfRange getIfRange() {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      return IfRange.forString(getFirst("If-Range"));<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   }<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>   /**<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    * Returns the &lt;code&gt;If-Unmodified-Since&lt;/code&gt; header on the request.<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    * &lt;p&gt;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    * Only send the response if the entity has not been modified since a specific time.<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    *<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    * &lt;p class='bcode'&gt;<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    *    If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    * &lt;/p&gt;<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    *<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    * @return The parsed &lt;code&gt;If-Unmodified-Since&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    */<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   public IfUnmodifiedSince getIfUnmodifiedSince() {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return IfUnmodifiedSince.forString(getFirst("If-Unmodified-Since"));<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   }<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>   /**<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    * Returns the &lt;code&gt;Max-Forwards&lt;/code&gt; header on the request.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    * &lt;p&gt;<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    * Limit the number of times the message can be forwarded through proxies or gateways.<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    *<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    * &lt;p class='bcode'&gt;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    *    Max-Forwards: 10<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    * &lt;/p&gt;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    *<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    * @return The parsed &lt;code&gt;Max-Forwards&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    */<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   public MaxForwards getMaxForwards() {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      return MaxForwards.forString(getFirst("Max-Forwards"));<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   }<a name="line.540"></a>
-<span class="sourceLineNo">541</span><a name="line.541"></a>
-<span class="sourceLineNo">542</span>   /**<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    * Returns the &lt;code&gt;Pragma&lt;/code&gt; header on the request.<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    * &lt;p&gt;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    * Implementation-specific fields that may have various effects anywhere along the request-response chain.<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    *<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    * &lt;p class='bcode'&gt;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    *    Pragma: no-cache<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    * &lt;/p&gt;<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    *<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    * @return The parsed &lt;code&gt;Pragma&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>   public Pragma getPragma() {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      return Pragma.forString(getFirst("Pragma"));<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>   /**<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    * Returns the &lt;code&gt;Proxy-Authorization&lt;/code&gt; header on the request.<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    * &lt;p&gt;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    * Authorization credentials for connecting to a proxy.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    *<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    * &lt;p class='bcode'&gt;<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    *    Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    * &lt;/p&gt;<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    *<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    * @return The parsed &lt;code&gt;Proxy-Authorization&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    */<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   public ProxyAuthorization getProxyAuthorization() {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      return ProxyAuthorization.forString(getFirst("Proxy-Authorization"));<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>   /**<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    * Returns the &lt;code&gt;Range&lt;/code&gt; header on the request.<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    * &lt;p&gt;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>    * Request only part of an entity. Bytes are numbered from 0.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    *<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    * &lt;p class='bcode'&gt;<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    *    Range: bytes=500-999<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    * &lt;/p&gt;<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    *<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    * @return The parsed &lt;code&gt;Range&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    */<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   public Range getRange() {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      return Range.forString(getFirst("Range"));<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>   /**<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    * Returns the &lt;code&gt;Referer&lt;/code&gt; header on the request.<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    * &lt;p&gt;<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    * This is the address of the previous web page from which a link to the currently requested page was followed.<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    *<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    * &lt;p class='bcode'&gt;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    *    Referer: http://en.wikipedia.org/wiki/Main_Page<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    * &lt;/p&gt;<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    *<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    * @return The parsed &lt;code&gt;Referer&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    */<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   public Referer getReferer() {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      return Referer.forString(getFirst("Referer"));<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>   /**<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    * Returns the &lt;code&gt;TE&lt;/code&gt; header on the request.<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    * &lt;p&gt;<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    * The transfer encodings the user agent is willing to accept: the same values as for the response header field<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    * Transfer-Encoding can be used, plus the "trailers" value (related to the "chunked" transfer method) to notify the<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    * server it expects to receive additional fields in the trailer after the last, zero-sized, chunk.<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    *<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    * &lt;p class='bcode'&gt;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    *    TE: trailers, deflate<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    * &lt;/p&gt;<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    *<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    * @return The parsed &lt;code&gt;TE&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    */<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   public TE getTE() {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      return TE.forString(getFirst("TE"));<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>    * Returns the &lt;code&gt;Time-Zone&lt;/code&gt; header value on the request if there is one.<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    * &lt;p&gt;<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    * Example: &lt;js&gt;"GMT"&lt;/js&gt;.<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    *<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    * @return The &lt;code&gt;Time-Zone&lt;/code&gt; header value on the request, or &lt;jk&gt;null&lt;/jk&gt; if not present.<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    */<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   public TimeZone getTimeZone() {<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      String tz = getFirst("Time-Zone");<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      if (tz != null)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>         return TimeZone.getTimeZone(tz);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      return null;<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   }<a name="line.636"></a>
-<span class="sourceLineNo">637</span><a name="line.637"></a>
-<span class="sourceLineNo">638</span>   /**<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    * Returns the &lt;code&gt;User-Agent&lt;/code&gt; header on the request.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    * &lt;p&gt;<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    * The user agent string of the user agent.<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    *<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    * &lt;p class='bcode'&gt;<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    *    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    * &lt;/p&gt;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    *<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    * @return The parsed &lt;code&gt;User-Agent&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    */<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   public UserAgent getUserAgent() {<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      return UserAgent.forString(getFirst("User-Agent"));<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   }<a name="line.652"></a>
-<span class="sourceLineNo">653</span><a name="line.653"></a>
-<span class="sourceLineNo">654</span>   /**<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    * Returns the &lt;code&gt;Upgrade&lt;/code&gt; header on the request.<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    * &lt;p&gt;<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    * Ask the server to upgrade to another protocol.<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    *<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    * &lt;h6 class='figure'&gt;Example:&lt;/h6&gt;<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    * &lt;p class='bcode'&gt;<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    *    Upgrade: HTTP/2.0, HTTPS/1.3, IRC/6.9, RTA/x11, websocket<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    * &lt;/p&gt;<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    *<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    * @return The parsed &lt;code&gt;Upgrade&lt;/code&gt; header on the request, or &lt;jk&gt;null&lt;/jk&gt; if not found.<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    */<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   public Upgrade getUpgrade() {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>      return Upgrade.forString(getFirst("Upgrade"));<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>   /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    * Returns the &lt;code&gt;Via&lt;/code&gt; header on the request.<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    * &lt;p&gt;<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    * Informs the server of pr

<TRUNCATED>


[08/21] incubator-juneau-website git commit: Update javadocs with QueryWidget info.

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocSerializerContext.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocSerializerContext.html b/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocSerializerContext.html
index 524d210..f4b3ea9 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocSerializerContext.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocSerializerContext.html
@@ -285,274 +285,276 @@
 <span class="sourceLineNo">277</span>    *    )<a name="line.277"></a>
 <span class="sourceLineNo">278</span>    *    &lt;jk&gt;public class&lt;/jk&gt; AddressBookResource &lt;jk&gt;extends&lt;/jk&gt; RestServletJenaDefault {<a name="line.278"></a>
 <span class="sourceLineNo">279</span>    * &lt;/p&gt;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    */<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   public static final String HTMLDOC_links = "HtmlDocSerializer.links.map";<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>   /**<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Add to the {@link #HTMLDOC_links} property.<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    */<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   public static final String HTMLDOC_links_put = "HtmlDocSerializer.links.map.put";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Nav section contents.<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    * &lt;p&gt;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    * &lt;ul&gt;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.nav"&lt;/js&gt;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;null&lt;/jk&gt;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    * &lt;/ul&gt;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    * &lt;p&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    * Allows you to override the contents of the nav section on the HTML page.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    * The nav section normally contains the page links at the top of the page.<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    * &lt;p&gt;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    *<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    * &lt;p class='bcode'&gt;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    *       htmldoc=&lt;ja&gt;@HtmlDoc&lt;/ja&gt;(<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    *          nav=&lt;js&gt;"&amp;lt;p class='special-navigation'&amp;gt;This is my special navigation content&amp;lt;/p&amp;gt;"&lt;/js&gt;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    *       )<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    *    )<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    * &lt;/p&gt;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    * &lt;p&gt;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    * When this property is specified, the {@link #HTMLDOC_links} property is ignored.<a name="line.311"></a>
+<span class="sourceLineNo">280</span>    * &lt;p&gt;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    * Values that start with &lt;js&gt;'&amp;lt;'&lt;/js&gt; are assumed to be HTML and rendered as-is. <a name="line.281"></a>
+<span class="sourceLineNo">282</span>    */<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   public static final String HTMLDOC_links = "HtmlDocSerializer.links.map";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Add to the {@link #HTMLDOC_links} property.<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    */<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   public static final String HTMLDOC_links_put = "HtmlDocSerializer.links.map.put";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Nav section contents.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    * &lt;p&gt;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    * &lt;ul&gt;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.nav"&lt;/js&gt;<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;null&lt;/jk&gt;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    * &lt;/ul&gt;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    * &lt;p&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    * Allows you to override the contents of the nav section on the HTML page.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    * The nav section normally contains the page links at the top of the page.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    * &lt;p&gt;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    *<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    * &lt;p class='bcode'&gt;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    *       htmldoc=&lt;ja&gt;@HtmlDoc&lt;/ja&gt;(<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    *          nav=&lt;js&gt;"&amp;lt;p class='special-navigation'&amp;gt;This is my special navigation content&amp;lt;/p&amp;gt;"&lt;/js&gt;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    *       )<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    *    )<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    * &lt;/p&gt;<a name="line.311"></a>
 <span class="sourceLineNo">312</span>    * &lt;p&gt;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    * A value of &lt;js&gt;"NONE"&lt;/js&gt; can be used to represent no value to differentiate it from an empty string.<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   public static final String HTMLDOC_nav = "HtmlDocSerializer.nav";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Aside section contents.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    * &lt;p&gt;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    * &lt;ul&gt;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.aside"&lt;/js&gt;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;null&lt;/jk&gt;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    * &lt;/ul&gt;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    * &lt;p&gt;<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    * Allows you to specifigy the contents of the aside section on the HTML page.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    * The aside section floats on the right of the page for providing content supporting the serialized content of<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    *    the page.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    * &lt;p&gt;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    * By default, the aside section is empty.<a name="line.331"></a>
+<span class="sourceLineNo">313</span>    * When this property is specified, the {@link #HTMLDOC_links} property is ignored.<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    * &lt;p&gt;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    * A value of &lt;js&gt;"NONE"&lt;/js&gt; can be used to represent no value to differentiate it from an empty string.<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   public static final String HTMLDOC_nav = "HtmlDocSerializer.nav";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Aside section contents.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    * &lt;p&gt;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    * &lt;ul&gt;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.aside"&lt;/js&gt;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;null&lt;/jk&gt;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    * &lt;/ul&gt;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    * &lt;p&gt;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    * Allows you to specifigy the contents of the aside section on the HTML page.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    * The aside section floats on the right of the page for providing content supporting the serialized content of<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    *    the page.<a name="line.331"></a>
 <span class="sourceLineNo">332</span>    * &lt;p&gt;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    *<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    * &lt;p class='bcode'&gt;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    *       htmldoc=&lt;ja&gt;@HtmlDoc&lt;/ja&gt;(<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    *          aside=&lt;js&gt;"&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Item 1&amp;lt;li&amp;gt;Item 2&amp;lt;li&amp;gt;Item 3&amp;lt;/ul&amp;gt;"&lt;/js&gt;<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>    * &lt;/p&gt;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    * &lt;p&gt;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    * A value of &lt;js&gt;"NONE"&lt;/js&gt; can be used to represent no value to differentiate it from an empty string.<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    */<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   public static final String HTMLDOC_aside = "HtmlDocSerializer.aside";<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>   /**<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Footer section contents.<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    * &lt;p&gt;<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    * &lt;ul&gt;<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.footer"&lt;/js&gt;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;null&lt;/jk&gt;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    * &lt;/ul&gt;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    * &lt;p&gt;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    * Allows you to specify the contents of the footer section on the HTML page.<a name="line.357"></a>
+<span class="sourceLineNo">333</span>    * By default, the aside section is empty.<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    * &lt;p&gt;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    *<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    * &lt;p class='bcode'&gt;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    *       htmldoc=&lt;ja&gt;@HtmlDoc&lt;/ja&gt;(<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    *          aside=&lt;js&gt;"&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;Item 1&amp;lt;li&amp;gt;Item 2&amp;lt;li&amp;gt;Item 3&amp;lt;/ul&amp;gt;"&lt;/js&gt;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    *       )<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    *    )<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    * &lt;/p&gt;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    * &lt;p&gt;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    * A value of &lt;js&gt;"NONE"&lt;/js&gt; can be used to represent no value to differentiate it from an empty string.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    */<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   public static final String HTMLDOC_aside = "HtmlDocSerializer.aside";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Footer section contents.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    * &lt;p&gt;<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    * &lt;ul&gt;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.footer"&lt;/js&gt;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;null&lt;/jk&gt;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    * &lt;/ul&gt;<a name="line.357"></a>
 <span class="sourceLineNo">358</span>    * &lt;p&gt;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    * By default, the footer section is empty.<a name="line.359"></a>
+<span class="sourceLineNo">359</span>    * Allows you to specify the contents of the footer section on the HTML page.<a name="line.359"></a>
 <span class="sourceLineNo">360</span>    * &lt;p&gt;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    *<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    * &lt;p class='bcode'&gt;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    *       htmldoc=&lt;ja&gt;@HtmlDoc&lt;/ja&gt;(<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    *          footer=&lt;js&gt;"&amp;lt;b&amp;gt;This interface is great!&amp;lt;/b&amp;gt;"&lt;/js&gt;<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>    * &lt;/p&gt;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    * &lt;p&gt;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    * A value of &lt;js&gt;"NONE"&lt;/js&gt; can be used to represent no value to differentiate it from an empty string.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   public static final String HTMLDOC_footer = "HtmlDocSerializer.footer";<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>   /**<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  No-results message.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    * &lt;p&gt;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    * &lt;ul&gt;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.noResultsMessage"&lt;/js&gt;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;js&gt;"&amp;lt;p&amp;gt;no results&amp;lt;/p&amp;gt;"&lt;/js&gt;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    * &lt;/ul&gt;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    * &lt;p&gt;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    * Allows you to specify the string message used when trying to serialize an empty array or empty list.<a name="line.385"></a>
+<span class="sourceLineNo">361</span>    * By default, the footer section is empty.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    * &lt;p&gt;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    *<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    * &lt;p class='bcode'&gt;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    *       htmldoc=&lt;ja&gt;@HtmlDoc&lt;/ja&gt;(<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    *          footer=&lt;js&gt;"&amp;lt;b&amp;gt;This interface is great!&amp;lt;/b&amp;gt;"&lt;/js&gt;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    *       )<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    *    )<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    * &lt;/p&gt;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    * &lt;p&gt;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    * A value of &lt;js&gt;"NONE"&lt;/js&gt; can be used to represent no value to differentiate it from an empty string.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   public static final String HTMLDOC_footer = "HtmlDocSerializer.footer";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  No-results message.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    * &lt;p&gt;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    * &lt;ul&gt;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.noResultsMessage"&lt;/js&gt;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;js&gt;"&amp;lt;p&amp;gt;no results&amp;lt;/p&amp;gt;"&lt;/js&gt;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    * &lt;/ul&gt;<a name="line.385"></a>
 <span class="sourceLineNo">386</span>    * &lt;p&gt;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    *<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    * &lt;p class='bcode'&gt;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    *       htmldoc=&lt;ja&gt;@HtmlDoc&lt;/ja&gt;(<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    *          =&lt;js&gt;"&amp;lt;b&amp;gt;This interface is great!&amp;lt;/b&amp;gt;"&lt;/js&gt;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    *       )<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    *    )<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    * &lt;/p&gt;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    * &lt;p&gt;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    * A value of &lt;js&gt;"NONE"&lt;/js&gt; can be used to represent no value to differentiate it from an empty string.<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    */<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   public static final String HTMLDOC_noResultsMessage = "HtmlDocSerializer.noResultsMessage";<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>   /**<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Prevent word wrap on page.<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    * &lt;p&gt;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    * &lt;ul&gt;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.nowrap"&lt;/js&gt;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;Boolean&lt;/code&gt;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;false&lt;/jk&gt;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    * &lt;/ul&gt;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    * &lt;p&gt;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    * Adds &lt;js&gt;"* {white-space:nowrap}"&lt;/js&gt; to the CSS instructions on the page to prevent word wrapping.<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    */<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   public static final String HTMLDOC_nowrap = "HtmlDocSerializer.nowrap";<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>   /**<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Stylesheet URL.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    * &lt;p&gt;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    * &lt;ul&gt;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.cssUrl"&lt;/js&gt;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;js&gt;"style.css"&lt;/js&gt;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    * &lt;/ul&gt;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    * &lt;p&gt;<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    * Adds a link to the specified stylesheet URL.<a name="line.425"></a>
+<span class="sourceLineNo">387</span>    * Allows you to specify the string message used when trying to serialize an empty array or empty list.<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    * &lt;p&gt;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    *<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    * &lt;p class='bcode'&gt;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    *       htmldoc=&lt;ja&gt;@HtmlDoc&lt;/ja&gt;(<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    *          =&lt;js&gt;"&amp;lt;b&amp;gt;This interface is great!&amp;lt;/b&amp;gt;"&lt;/js&gt;<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>    * &lt;/p&gt;<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    * &lt;p&gt;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    * A value of &lt;js&gt;"NONE"&lt;/js&gt; can be used to represent no value to differentiate it from an empty string.<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    */<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   public static final String HTMLDOC_noResultsMessage = "HtmlDocSerializer.noResultsMessage";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Prevent word wrap on page.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    * &lt;p&gt;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    * &lt;ul&gt;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.nowrap"&lt;/js&gt;<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;Boolean&lt;/code&gt;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;jk&gt;false&lt;/jk&gt;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    * &lt;/ul&gt;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    * &lt;p&gt;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    * Adds &lt;js&gt;"* {white-space:nowrap}"&lt;/js&gt; to the CSS instructions on the page to prevent word wrapping.<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    */<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   public static final String HTMLDOC_nowrap = "HtmlDocSerializer.nowrap";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Stylesheet URL.<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    * &lt;p&gt;<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    * &lt;ul&gt;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.cssUrl"&lt;/js&gt;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;String&lt;/code&gt;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;js&gt;"style.css"&lt;/js&gt;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    * &lt;/ul&gt;<a name="line.425"></a>
 <span class="sourceLineNo">426</span>    * &lt;p&gt;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    * If not specified, defaults to the built-in stylesheet located at &lt;js&gt;"style.css"&lt;/js&gt;.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    * Note that this stylesheet is controlled by the &lt;code&gt;&lt;ja&gt;@RestResource&lt;/ja&gt;.stylesheet()&lt;/code&gt; annotation.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    * &lt;p&gt;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    * A value of &lt;js&gt;"NONE"&lt;/js&gt; can be used to represent no value to differentiate it from an empty string.<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    */<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   public static final String HTMLDOC_cssUrl = "HtmlDocSerializer.cssUrl";<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>   /**<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  CSS code.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    * &lt;p&gt;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    * &lt;ul&gt;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.css.list"&lt;/js&gt;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;List&amp;lt;String&amp;gt;&lt;/code&gt;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; empty list<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    * &lt;/ul&gt;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    * &lt;p&gt;<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    * Adds the specified CSS instructions to the HTML page.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    *<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    * &lt;/p&gt;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    * &lt;p class='bcode'&gt;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    *       properties={<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    *          &lt;ja&gt;@Property&lt;/ja&gt;(name=HtmlDocSerializerContext.&lt;jsf&gt;HTMLDOC_css&lt;/jsf&gt;, value=&lt;js&gt;"h3 { color: red; }\nh5 { font-weight: bold; }"&lt;/js&gt;)<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>    * &lt;/p&gt;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    * A shortcut on &lt;ja&gt;@RestResource&lt;/ja&gt; is also provided for this setting:<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    * &lt;p class='bcode'&gt;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    *       htmldoc=@HtmlDoc(<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    *          css=&lt;js&gt;"h3 { color: red; }\nh5 { font-weight: bold; }"&lt;/js&gt;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    *       )<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    *    )<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    * &lt;/p&gt;<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    */<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   public static final String HTMLDOC_css = "HtmlDocSerializer.css.list";<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>   /**<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Add to the {@link #HTMLDOC_css} property.<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    */<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   public static final String HTMLDOC_css_add = "HtmlDocSerializer.css.list.add";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  HTML document template.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    * &lt;p&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    * &lt;ul&gt;<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.template"&lt;/js&gt;<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;Class&amp;lt;? &lt;jk&gt;extends&lt;/jk&gt; HtmlDocTemplate&amp;gt;&lt;/code&gt; or {@link HtmlDocTemplate}<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;code&gt;HtmlDocTemplateBasic.&lt;jk&gt;class&lt;/jk&gt;&lt;/code&gt;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    * &lt;/ul&gt;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    * &lt;p&gt;<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    * Specifies the template to use for serializing the page.<a name="line.481"></a>
+<span class="sourceLineNo">427</span>    * Adds a link to the specified stylesheet URL.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    * &lt;p&gt;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    * If not specified, defaults to the built-in stylesheet located at &lt;js&gt;"style.css"&lt;/js&gt;.<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    * Note that this stylesheet is controlled by the &lt;code&gt;&lt;ja&gt;@RestResource&lt;/ja&gt;.stylesheet()&lt;/code&gt; annotation.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    * &lt;p&gt;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    * A value of &lt;js&gt;"NONE"&lt;/js&gt; can be used to represent no value to differentiate it from an empty string.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    */<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   public static final String HTMLDOC_cssUrl = "HtmlDocSerializer.cssUrl";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  CSS code.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    * &lt;p&gt;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    * &lt;ul&gt;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.css.list"&lt;/js&gt;<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;List&amp;lt;String&amp;gt;&lt;/code&gt;<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; empty list<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    * &lt;/ul&gt;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    * &lt;p&gt;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    * Adds the specified CSS instructions to the HTML page.<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    *<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    * &lt;/p&gt;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    * &lt;p class='bcode'&gt;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    *       properties={<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    *          &lt;ja&gt;@Property&lt;/ja&gt;(name=HtmlDocSerializerContext.&lt;jsf&gt;HTMLDOC_css&lt;/jsf&gt;, value=&lt;js&gt;"h3 { color: red; }\nh5 { font-weight: bold; }"&lt;/js&gt;)<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>    * &lt;/p&gt;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    * A shortcut on &lt;ja&gt;@RestResource&lt;/ja&gt; is also provided for this setting:<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    * &lt;p class='bcode'&gt;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    *       htmldoc=@HtmlDoc(<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    *          css=&lt;js&gt;"h3 { color: red; }\nh5 { font-weight: bold; }"&lt;/js&gt;<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>    * &lt;/p&gt;<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    */<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   public static final String HTMLDOC_css = "HtmlDocSerializer.css.list";<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>    * &lt;b&gt;Configuration property:&lt;/b&gt;  Add to the {@link #HTMLDOC_css} property.<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    */<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   public static final String HTMLDOC_css_add = "HtmlDocSerializer.css.list.add";<a name="line.471"></a>
+<span class="sourceLineNo">472</span><a name="line.472"></a>
+<span class="sourceLineNo">473</span>   /**<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    * &lt;b&gt;Configuration property:&lt;/b&gt;  HTML document template.<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    * &lt;p&gt;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    * &lt;ul&gt;<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    *    &lt;li&gt;&lt;b&gt;Name:&lt;/b&gt; &lt;js&gt;"HtmlDocSerializer.template"&lt;/js&gt;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    *    &lt;li&gt;&lt;b&gt;Data type:&lt;/b&gt; &lt;code&gt;Class&amp;lt;? &lt;jk&gt;extends&lt;/jk&gt; HtmlDocTemplate&amp;gt;&lt;/code&gt; or {@link HtmlDocTemplate}<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    *    &lt;li&gt;&lt;b&gt;Default:&lt;/b&gt; &lt;code&gt;HtmlDocTemplateBasic.&lt;jk&gt;class&lt;/jk&gt;&lt;/code&gt;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    *    &lt;li&gt;&lt;b&gt;Session-overridable:&lt;/b&gt; &lt;jk&gt;true&lt;/jk&gt;<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    * &lt;/ul&gt;<a name="line.481"></a>
 <span class="sourceLineNo">482</span>    * &lt;p&gt;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    * By default, the {@link HtmlDocTemplateBasic} class is used to construct the contents of the HTML page, but<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    * can be overridden with your own custom implementation class.<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    *<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    * &lt;p class='bcode'&gt;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    *       htmldoc=@HtmlDoc(<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    *          template=MySpecialDocTemplate.&lt;jk&gt;class&lt;/jk&gt;<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>    * &lt;/p&gt;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    */<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   public static final String HTMLDOC_template = "HtmlDocSerializer.template";<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>   final String[] css;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   final Map&lt;String,String&gt; links;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   final String title, description, branding, header, nav, aside, footer, cssUrl, noResultsMessage;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   final boolean nowrap;<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   final HtmlDocTemplate template;<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>    * Constructor.<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    * &lt;p&gt;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    * Typically only called from {@link PropertyStore#getContext(Class)}.<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    *<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    * @param ps The property store that created this context.<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    */<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   public HtmlDocSerializerContext(PropertyStore ps) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      super(ps);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      css = ps.getProperty(HTMLDOC_css, String[].class, new String[0]);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      title = ps.getProperty(HTMLDOC_title, String.class, null);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      description = ps.getProperty(HTMLDOC_description, String.class, null);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      branding = ps.getProperty(HTMLDOC_branding, String.class, null);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      header = ps.getProperty(HTMLDOC_header, String.class, null);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      nav = ps.getProperty(HTMLDOC_nav, String.class, null);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      aside = ps.getProperty(HTMLDOC_aside, String.class, null);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      footer = ps.getProperty(HTMLDOC_footer, String.class, null);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      cssUrl = ps.getProperty(HTMLDOC_cssUrl, String.class, null);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      nowrap = ps.getProperty(HTMLDOC_nowrap, boolean.class, false);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      links = ps.getMap(HTMLDOC_links, String.class, String.class, null);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      noResultsMessage = ps.getProperty(HTMLDOC_noResultsMessage, String.class, "&lt;p&gt;no results&lt;/p&gt;");<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      template = ps.getTypedProperty(HTMLDOC_template, HtmlDocTemplate.class, HtmlDocTemplateBasic.class);<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>   @Override /* Context */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   public ObjectMap asMap() {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      return super.asMap()<a name="line.530"></a>
-<span class="sourceLineNo">531</span>         .append("HtmlDocSerializerContext", new ObjectMap()<a name="line.531"></a>
-<span class="sourceLineNo">532</span>            .append("cssImports", css)<a name="line.532"></a>
-<span class="sourceLineNo">533</span>            .append("title", title)<a name="line.533"></a>
-<span class="sourceLineNo">534</span>            .append("text", description)<a name="line.534"></a>
-<span class="sourceLineNo">535</span>            .append("branding", branding)<a name="line.535"></a>
-<span class="sourceLineNo">536</span>            .append("header", header)<a name="line.536"></a>
-<span class="sourceLineNo">537</span>            .append("nav", nav)<a name="line.537"></a>
-<span class="sourceLineNo">538</span>            .append("links", links)<a name="line.538"></a>
-<span class="sourceLineNo">539</span>            .append("aside", aside)<a name="line.539"></a>
-<span class="sourceLineNo">540</span>            .append("footer", footer)<a name="line.540"></a>
-<span class="sourceLineNo">541</span>            .append("cssUrl", cssUrl)<a name="line.541"></a>
-<span class="sourceLineNo">542</span>            .append("nowrap", nowrap)<a name="line.542"></a>
-<span class="sourceLineNo">543</span>            .append("template", template)<a name="line.543"></a>
-<span class="sourceLineNo">544</span>            .append("noResultsMessage", noResultsMessage)<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>}<a name="line.547"></a>
+<span class="sourceLineNo">483</span>    * Specifies the template to use for serializing the page.<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    * &lt;p&gt;<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    * By default, the {@link HtmlDocTemplateBasic} class is used to construct the contents of the HTML page, but<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    * can be overridden with your own custom implementation class.<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    *<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    * &lt;p class='bcode'&gt;<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    *    &lt;ja&gt;@RestResource&lt;/ja&gt;(<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    *       htmldoc=@HtmlDoc(<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    *          template=MySpecialDocTemplate.&lt;jk&gt;class&lt;/jk&gt;<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    *       )<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    *    )<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    * &lt;/p&gt;<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    */<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   public static final String HTMLDOC_template = "HtmlDocSerializer.template";<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span><a name="line.499"></a>
+<span class="sourceLineNo">500</span>   final String[] css;<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   final Map&lt;String,Object&gt; links;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   final String title, description, branding, header, nav, aside, footer, cssUrl, noResultsMessage;<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   final boolean nowrap;<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   final HtmlDocTemplate template;<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>    * Constructor.<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    * &lt;p&gt;<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    * Typically only called from {@link PropertyStore#getContext(Class)}.<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    *<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    * @param ps The property store that created this context.<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    */<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   public HtmlDocSerializerContext(PropertyStore ps) {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      super(ps);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>      css = ps.getProperty(HTMLDOC_css, String[].class, new String[0]);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>      title = ps.getProperty(HTMLDOC_title, String.class, null);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      description = ps.getProperty(HTMLDOC_description, String.class, null);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      branding = ps.getProperty(HTMLDOC_branding, String.class, null);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      header = ps.getProperty(HTMLDOC_header, String.class, null);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      nav = ps.getProperty(HTMLDOC_nav, String.class, null);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      aside = ps.getProperty(HTMLDOC_aside, String.class, null);<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      footer = ps.getProperty(HTMLDOC_footer, String.class, null);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>      cssUrl = ps.getProperty(HTMLDOC_cssUrl, String.class, null);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      nowrap = ps.getProperty(HTMLDOC_nowrap, boolean.class, false);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>      links = ps.getMap(HTMLDOC_links, String.class, Object.class, null);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      noResultsMessage = ps.getProperty(HTMLDOC_noResultsMessage, String.class, "&lt;p&gt;no results&lt;/p&gt;");<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      template = ps.getTypedProperty(HTMLDOC_template, HtmlDocTemplate.class, HtmlDocTemplateBasic.class);<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   }<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>   @Override /* Context */<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   public ObjectMap asMap() {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      return super.asMap()<a name="line.532"></a>
+<span class="sourceLineNo">533</span>         .append("HtmlDocSerializerContext", new ObjectMap()<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            .append("cssImports", css)<a name="line.534"></a>
+<span class="sourceLineNo">535</span>            .append("title", title)<a name="line.535"></a>
+<span class="sourceLineNo">536</span>            .append("text", description)<a name="line.536"></a>
+<span class="sourceLineNo">537</span>            .append("branding", branding)<a name="line.537"></a>
+<span class="sourceLineNo">538</span>            .append("header", header)<a name="line.538"></a>
+<span class="sourceLineNo">539</span>            .append("nav", nav)<a name="line.539"></a>
+<span class="sourceLineNo">540</span>            .append("links", links)<a name="line.540"></a>
+<span class="sourceLineNo">541</span>            .append("aside", aside)<a name="line.541"></a>
+<span class="sourceLineNo">542</span>            .append("footer", footer)<a name="line.542"></a>
+<span class="sourceLineNo">543</span>            .append("cssUrl", cssUrl)<a name="line.543"></a>
+<span class="sourceLineNo">544</span>            .append("nowrap", nowrap)<a name="line.544"></a>
+<span class="sourceLineNo">545</span>            .append("template", template)<a name="line.545"></a>
+<span class="sourceLineNo">546</span>            .append("noResultsMessage", noResultsMessage)<a name="line.546"></a>
+<span class="sourceLineNo">547</span>         );<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   }<a name="line.548"></a>
+<span class="sourceLineNo">549</span>}<a name="line.549"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocSerializerSession.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocSerializerSession.html b/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocSerializerSession.html
index f1ae30c..7b0bb8d 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocSerializerSession.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocSerializerSession.html
@@ -43,7 +43,7 @@
 <span class="sourceLineNo">035</span><a name="line.35"></a>
 <span class="sourceLineNo">036</span>   private final String title, description, branding, header, nav, aside, footer, cssUrl, noResultsMessage;<a name="line.36"></a>
 <span class="sourceLineNo">037</span>   private final String[] css;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>   private final Map&lt;String,String&gt; links;<a name="line.38"></a>
+<span class="sourceLineNo">038</span>   private final Map&lt;String,Object&gt; links;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>   private final boolean nowrap;<a name="line.39"></a>
 <span class="sourceLineNo">040</span>   private final HtmlDocTemplate template;<a name="line.40"></a>
 <span class="sourceLineNo">041</span><a name="line.41"></a>
@@ -166,7 +166,7 @@
 <span class="sourceLineNo">158</span>    * @return The {@link HtmlDocSerializerContext#HTMLDOC_links} setting value in this context.<a name="line.158"></a>
 <span class="sourceLineNo">159</span>    *    &lt;jk&gt;null&lt;/jk&gt; if not specified.  Never an empty map.<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    */<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   public final Map&lt;String,String&gt; getLinks() {<a name="line.161"></a>
+<span class="sourceLineNo">161</span>   public final Map&lt;String,Object&gt; getLinks() {<a name="line.161"></a>
 <span class="sourceLineNo">162</span>      return links;<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>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/2871fb5d/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html b/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html
index d91dd63..494bb98 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/html/HtmlDocTemplateBasic.html
@@ -120,83 +120,87 @@
 <span class="sourceLineNo">112</span>         if (exists(nav))<a name="line.112"></a>
 <span class="sourceLineNo">113</span>            w.append(2, nav).nl(2);<a name="line.113"></a>
 <span class="sourceLineNo">114</span>      } else {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>         Map&lt;String,String&gt; htmlLinks = session.getLinks();<a name="line.115"></a>
+<span class="sourceLineNo">115</span>         Map&lt;String,Object&gt; htmlLinks = session.getLinks();<a name="line.115"></a>
 <span class="sourceLineNo">116</span>         boolean first = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>         if (htmlLinks != null) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>            for (Map.Entry&lt;String,String&gt; e : htmlLinks.entrySet()) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>               if (! first)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>                  w.append(3, " - ").nl(3);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>               first = false;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>               w.oTag("a").attr("class", "link").attr("href", session.resolveUri(e.getValue()), true).cTag().text(e.getKey(), true).eTag("a");<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>      }<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>   @Override /* HtmlDocTemplate */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   public void aside(HtmlDocSerializerSession session, HtmlWriter w, HtmlDocSerializer s, Object o) throws Exception {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      String aside = session.getAside();<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      if (exists(aside))<a name="line.131"></a>
-<span class="sourceLineNo">132</span>         w.append(aside);<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>   @Override /* HtmlDocTemplate */<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   public void article(HtmlDocSerializerSession session, HtmlWriter w, HtmlDocSerializer s, Object o) throws Exception {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      // To allow for page formatting using CSS, we encapsulate the data inside two div tags:<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      // &lt;div class='outerdata'&gt;&lt;div class='data' id='data'&gt;...&lt;/div&gt;&lt;/div&gt;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      w.oTag(3, "div").attr("class","outerdata").append('&gt;').nl(3);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      w.oTag(4, "div").attr("class","data").attr("id", "data").append('&gt;').nl(4);<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>      if (o == null) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>         w.append(5, "&lt;null/&gt;").nl(5);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      } else if (ObjectUtils.isEmpty(o)){<a name="line.144"></a>
-<span class="sourceLineNo">145</span>         String m = session.getNoResultsMessage();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>         if (exists(m))<a name="line.146"></a>
-<span class="sourceLineNo">147</span>            w.append(5, m).nl(5);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      } else {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>         s.parentSerialize(session, o);<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>      w.ie(4).eTag("div").nl(4);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      w.ie(4).eTag("div").nl(3);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   }<a name="line.154"></a>
+<span class="sourceLineNo">118</span>            for (Map.Entry&lt;String,Object&gt; e : htmlLinks.entrySet()) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>               String v = e.getValue().toString();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>               if (! first)<a name="line.120"></a>
+<span class="sourceLineNo">121</span>                  w.append(3, " - ").nl(3);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>               first = false;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>               if (v.startsWith("&lt;"))<a name="line.123"></a>
+<span class="sourceLineNo">124</span>                  w.append(v);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>               else<a name="line.125"></a>
+<span class="sourceLineNo">126</span>                  w.oTag("a").attr("class", "link").attr("href", session.resolveUri(v), true).cTag().text(e.getKey(), true).eTag("a");<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>      }<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>   @Override /* HtmlDocTemplate */<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   public void aside(HtmlDocSerializerSession session, HtmlWriter w, HtmlDocSerializer s, Object o) throws Exception {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      String aside = session.getAside();<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      if (exists(aside))<a name="line.135"></a>
+<span class="sourceLineNo">136</span>         w.append(aside);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>   @Override /* HtmlDocTemplate */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   public void article(HtmlDocSerializerSession session, HtmlWriter w, HtmlDocSerializer s, Object o) throws Exception {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      // To allow for page formatting using CSS, we encapsulate the data inside two div tags:<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      // &lt;div class='outerdata'&gt;&lt;div class='data' id='data'&gt;...&lt;/div&gt;&lt;/div&gt;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      w.oTag(3, "div").attr("class","outerdata").append('&gt;').nl(3);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      w.oTag(4, "div").attr("class","data").attr("id", "data").append('&gt;').nl(4);<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>      if (o == null) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>         w.append(5, "&lt;null/&gt;").nl(5);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      } else if (ObjectUtils.isEmpty(o)){<a name="line.148"></a>
+<span class="sourceLineNo">149</span>         String m = session.getNoResultsMessage();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>         if (exists(m))<a name="line.150"></a>
+<span class="sourceLineNo">151</span>            w.append(5, m).nl(5);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      } else {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>         s.parentSerialize(session, o);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      }<a name="line.154"></a>
 <span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>   @Override /* HtmlDocTemplate */<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   public void footer(HtmlDocSerializerSession session, HtmlWriter w, HtmlDocSerializer s, Object o) throws Exception {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      String footer = session.getFooter();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      if (exists(footer))<a name="line.159"></a>
-<span class="sourceLineNo">160</span>         w.append(footer);<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>   @Override /* HtmlDocTemplate */<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   public boolean hasCss(HtmlDocSerializerSession session) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      return true;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   }<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>   @Override /* HtmlDocTemplate */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   public boolean hasHeader(HtmlDocSerializerSession session) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      return exists(session.getHeader()) || exists(session.getTitle()) || exists(session.getDescription());<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>   @Override /* HtmlDocTemplate */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   public boolean hasNav(HtmlDocSerializerSession session) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      return exists(session.getNav()) || session.getLinks() != null;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   }<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>   @Override /* HtmlDocTemplate */<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   public boolean hasAside(HtmlDocSerializerSession session) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      return exists(session.getAside());<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>   @Override /* HtmlDocTemplate */<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   public boolean hasFooter(HtmlDocSerializerSession session) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      return exists(session.getFooter());<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>   private static boolean exists(String s) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      return s != null &amp;&amp; ! "NONE".equals(s);<a name="line.189"></a>
+<span class="sourceLineNo">156</span>      w.ie(4).eTag("div").nl(4);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      w.ie(4).eTag("div").nl(3);<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>   @Override /* HtmlDocTemplate */<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   public void footer(HtmlDocSerializerSession session, HtmlWriter w, HtmlDocSerializer s, Object o) throws Exception {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      String footer = session.getFooter();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      if (exists(footer))<a name="line.163"></a>
+<span class="sourceLineNo">164</span>         w.append(footer);<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>   @Override /* HtmlDocTemplate */<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   public boolean hasCss(HtmlDocSerializerSession session) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return true;<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>   @Override /* HtmlDocTemplate */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   public boolean hasHeader(HtmlDocSerializerSession session) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      return exists(session.getHeader()) || exists(session.getTitle()) || exists(session.getDescription());<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   }<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>   @Override /* HtmlDocTemplate */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   public boolean hasNav(HtmlDocSerializerSession session) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      return exists(session.getNav()) || session.getLinks() != null;<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>   @Override /* HtmlDocTemplate */<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   public boolean hasAside(HtmlDocSerializerSession session) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      return exists(session.getAside());<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   }<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>   @Override /* HtmlDocTemplate */<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   public boolean hasFooter(HtmlDocSerializerSession session) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      return exists(session.getFooter());<a name="line.189"></a>
 <span class="sourceLineNo">190</span>   }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>}<a name="line.191"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>   private static boolean exists(String s) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      return s != null &amp;&amp; ! "NONE".equals(s);<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>