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/02/08 01:20:31 UTC

[12/51] [partial] incubator-juneau-website git commit: Update docs for 6.0.1

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/afa6a1d0/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 b5d0742..99f46a5 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/BeanMap.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/BeanMap.html
@@ -32,7 +32,7 @@
 <span class="sourceLineNo">024</span>/**<a name="line.24"></a>
 <span class="sourceLineNo">025</span> * Java bean wrapper class.<a name="line.25"></a>
 <span class="sourceLineNo">026</span> *<a name="line.26"></a>
-<span class="sourceLineNo">027</span> * &lt;h6 class='topic'&gt;Description&lt;/h6&gt;<a name="line.27"></a>
+<span class="sourceLineNo">027</span> * &lt;h5 class='section'&gt;Description:&lt;/h5&gt;<a name="line.27"></a>
 <span class="sourceLineNo">028</span> * &lt;p&gt;<a name="line.28"></a>
 <span class="sourceLineNo">029</span> *    A wrapper that wraps Java bean instances inside of a {@link Map} interface that allows<a name="line.29"></a>
 <span class="sourceLineNo">030</span> *    properties on the wrapped object can be accessed using the {@link Map#get(Object) get()} and {@link Map#put(Object,Object) put()} methods.<a name="line.30"></a>
@@ -178,7 +178,7 @@
 <span class="sourceLineNo">170</span>    *    {@link BeanProperty#swap() @BeanProperty.swap()} annotation, the value being passed in must be<a name="line.170"></a>
 <span class="sourceLineNo">171</span>    *    a String containing an ISO8601 date-time string value.<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    *<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    * &lt;h6 class='topic'&gt;Example:&lt;/h6&gt;<a name="line.173"></a>
+<span class="sourceLineNo">173</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    * &lt;p class='bcode'&gt;<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    *    &lt;jc&gt;// Construct a bean with a 'birthDate' Date field&lt;/jc&gt;<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    *    Person p = &lt;jk&gt;new&lt;/jk&gt; Person();<a name="line.176"></a>
@@ -261,7 +261,7 @@
 <span class="sourceLineNo">253</span>    *    {@link BeanProperty#swap() @BeanProperty.swap()} annotation, this method will return a String<a name="line.253"></a>
 <span class="sourceLineNo">254</span>    *    containing an ISO8601 date-time string value.<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    *<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    * &lt;h6 class='topic'&gt;Example:&lt;/h6&gt;<a name="line.256"></a>
+<span class="sourceLineNo">256</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    * &lt;p class='bcode'&gt;<a name="line.257"></a>
 <span class="sourceLineNo">258</span>    *    &lt;jc&gt;// Construct a bean with a 'birthDate' Date field&lt;/jc&gt;<a name="line.258"></a>
 <span class="sourceLineNo">259</span>    *    Person p = &lt;jk&gt;new&lt;/jk&gt; Person();<a name="line.259"></a>
@@ -302,7 +302,7 @@
 <span class="sourceLineNo">294</span>    *    depends on the default parser specified by the {@link BeanContext#BEAN_defaultParser} property<a name="line.294"></a>
 <span class="sourceLineNo">295</span>    *    value on the config that created the context that created this map.<a name="line.295"></a>
 <span class="sourceLineNo">296</span>    *<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    * &lt;h6 class='topic'&gt;Example:&lt;/h6&gt;<a name="line.297"></a>
+<span class="sourceLineNo">297</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.297"></a>
 <span class="sourceLineNo">298</span>    * &lt;p class='bcode'&gt;<a name="line.298"></a>
 <span class="sourceLineNo">299</span>    *    aPersonBean.load(&lt;js&gt;"{name:'John Smith',age:21}"&lt;/js&gt;)<a name="line.299"></a>
 <span class="sourceLineNo">300</span>    * &lt;/p&gt;<a name="line.300"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/afa6a1d0/content/site/apidocs/src-html/org/apache/juneau/BeanMapEntry.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/BeanMapEntry.html b/content/site/apidocs/src-html/org/apache/juneau/BeanMapEntry.html
index 2948ae1..38689f8 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/BeanMapEntry.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/BeanMapEntry.html
@@ -30,7 +30,7 @@
 <span class="sourceLineNo">022</span> * &lt;p&gt;<a name="line.22"></a>
 <span class="sourceLineNo">023</span> *    This class can be used to get and set property values on a bean, or to get metadata on a property.<a name="line.23"></a>
 <span class="sourceLineNo">024</span> *<a name="line.24"></a>
-<span class="sourceLineNo">025</span> * &lt;h6 class='topic'&gt;Example:&lt;/h6&gt;<a name="line.25"></a>
+<span class="sourceLineNo">025</span> * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.25"></a>
 <span class="sourceLineNo">026</span> * &lt;p class='bcode'&gt;<a name="line.26"></a>
 <span class="sourceLineNo">027</span> *    &lt;jc&gt;// Construct a new bean&lt;/jc&gt;<a name="line.27"></a>
 <span class="sourceLineNo">028</span> *    Person p = &lt;jk&gt;new&lt;/jk&gt; Person();<a name="line.28"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/afa6a1d0/content/site/apidocs/src-html/org/apache/juneau/BeanMeta.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/BeanMeta.html b/content/site/apidocs/src-html/org/apache/juneau/BeanMeta.html
index 9d2aadb..d04d038 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/BeanMeta.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/BeanMeta.html
@@ -37,7 +37,7 @@
 <span class="sourceLineNo">029</span>/**<a name="line.29"></a>
 <span class="sourceLineNo">030</span> * Encapsulates all access to the properties of a bean class (like a souped-up {@link java.beans.BeanInfo}).<a name="line.30"></a>
 <span class="sourceLineNo">031</span> *<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * &lt;h6 class='topic'&gt;Description&lt;/h6&gt;<a name="line.32"></a>
+<span class="sourceLineNo">032</span> * &lt;h5 class='section'&gt;Description:&lt;/h5&gt;<a name="line.32"></a>
 <span class="sourceLineNo">033</span> * &lt;p&gt;<a name="line.33"></a>
 <span class="sourceLineNo">034</span> *    Uses introspection to find all the properties associated with this class.  If the {@link Bean @Bean} annotation<a name="line.34"></a>
 <span class="sourceLineNo">035</span> *    is present on the class, or the class has a {@link BeanFilter} registered with it in the bean context,<a name="line.35"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/afa6a1d0/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 0939277..1ca5859 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/BeanPropertyMeta.html
@@ -259,7 +259,7 @@
 <span class="sourceLineNo">251</span><a name="line.251"></a>
 <span class="sourceLineNo">252</span>      if (field != null) {<a name="line.252"></a>
 <span class="sourceLineNo">253</span>         BeanProperty p = field.getAnnotation(BeanProperty.class);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>         rawTypeMeta = f.getClassMeta(p, field.getGenericType(), typeVarImpls);<a name="line.254"></a>
+<span class="sourceLineNo">254</span>         rawTypeMeta = f.resolveClassMeta(p, field.getGenericType(), typeVarImpls);<a name="line.254"></a>
 <span class="sourceLineNo">255</span>         isUri |= (rawTypeMeta.isUri() || field.isAnnotationPresent(org.apache.juneau.annotation.URI.class));<a name="line.255"></a>
 <span class="sourceLineNo">256</span>         if (p != null) {<a name="line.256"></a>
 <span class="sourceLineNo">257</span>            swap = getPropertyPojoSwap(p);<a name="line.257"></a>
@@ -272,7 +272,7 @@
 <span class="sourceLineNo">264</span>      if (getter != null) {<a name="line.264"></a>
 <span class="sourceLineNo">265</span>         BeanProperty p = getter.getAnnotation(BeanProperty.class);<a name="line.265"></a>
 <span class="sourceLineNo">266</span>         if (rawTypeMeta == null)<a name="line.266"></a>
-<span class="sourceLineNo">267</span>            rawTypeMeta = f.getClassMeta(p, getter.getGenericReturnType(), typeVarImpls);<a name="line.267"></a>
+<span class="sourceLineNo">267</span>            rawTypeMeta = f.resolveClassMeta(p, getter.getGenericReturnType(), typeVarImpls);<a name="line.267"></a>
 <span class="sourceLineNo">268</span>         isUri |= (rawTypeMeta.isUri() || getter.isAnnotationPresent(org.apache.juneau.annotation.URI.class));<a name="line.268"></a>
 <span class="sourceLineNo">269</span>         if (p != null) {<a name="line.269"></a>
 <span class="sourceLineNo">270</span>            if (swap == null)<a name="line.270"></a>
@@ -286,7 +286,7 @@
 <span class="sourceLineNo">278</span>      if (setter != null) {<a name="line.278"></a>
 <span class="sourceLineNo">279</span>         BeanProperty p = setter.getAnnotation(BeanProperty.class);<a name="line.279"></a>
 <span class="sourceLineNo">280</span>         if (rawTypeMeta == null)<a name="line.280"></a>
-<span class="sourceLineNo">281</span>            rawTypeMeta = f.getClassMeta(p, setter.getGenericParameterTypes()[0], typeVarImpls);<a name="line.281"></a>
+<span class="sourceLineNo">281</span>            rawTypeMeta = f.resolveClassMeta(p, setter.getGenericParameterTypes()[0], typeVarImpls);<a name="line.281"></a>
 <span class="sourceLineNo">282</span>         isUri |= (rawTypeMeta.isUri() || setter.isAnnotationPresent(org.apache.juneau.annotation.URI.class));<a name="line.282"></a>
 <span class="sourceLineNo">283</span>         if (p != null) {<a name="line.283"></a>
 <span class="sourceLineNo">284</span>         if (swap == null)<a name="line.284"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/afa6a1d0/content/site/apidocs/src-html/org/apache/juneau/BeanRegistry.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/BeanRegistry.html b/content/site/apidocs/src-html/org/apache/juneau/BeanRegistry.html
index 61dece1..a185bee 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/BeanRegistry.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/BeanRegistry.html
@@ -77,88 +77,106 @@
 <span class="sourceLineNo">069</span>               Map&lt;?,?&gt; m = (Map&lt;?,?&gt;)c.newInstance();<a name="line.69"></a>
 <span class="sourceLineNo">070</span>               for (Map.Entry&lt;?,?&gt; e : m.entrySet()) {<a name="line.70"></a>
 <span class="sourceLineNo">071</span>                  String typeName = StringUtils.toString(e.getKey());<a name="line.71"></a>
-<span class="sourceLineNo">072</span>                  ClassMeta&lt;?&gt; val = beanContext.getClassMeta(e.getValue());<a name="line.72"></a>
-<span class="sourceLineNo">073</span>                  map.put(typeName, val);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>               }<a name="line.74"></a>
-<span class="sourceLineNo">075</span>            } else {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>               Bean b = c.getAnnotation(Bean.class);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>               if (b == null || b.typeName().isEmpty())<a name="line.77"></a>
-<span class="sourceLineNo">078</span>                  throw new BeanRuntimeException("Class ''{0}'' was passed to BeanRegistry but it doesn't have a @Bean.typeName() annotation defined.", c.getName());<a name="line.78"></a>
-<span class="sourceLineNo">079</span>               map.put(b.typeName(), beanContext.getClassMeta(c));<a name="line.79"></a>
-<span class="sourceLineNo">080</span>            }<a name="line.80"></a>
-<span class="sourceLineNo">081</span>         }<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      } catch (BeanRuntimeException e) {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>         throw e;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      } catch (Exception e) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>         throw new BeanRuntimeException(e);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   }<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>   /**<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    * Converts the specified object map into a bean if it contains a &lt;js&gt;"_type"&lt;/js&gt; entry in it.<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    *<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    * @param m The object map to convert to a bean if possible.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    * @return The new bean, or the original &lt;code&gt;ObjectMap&lt;/code&gt; if no &lt;js&gt;"_type"&lt;/js&gt; entry was found.<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   public Object cast(ObjectMap m) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      if (isEmpty)<a name="line.96"></a>
-<span class="sourceLineNo">097</span>         return m;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      Object o = m.get(beanTypePropertyName);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      if (o == null)<a name="line.99"></a>
-<span class="sourceLineNo">100</span>         return m;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      String typeName = o.toString();<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      ClassMeta&lt;?&gt; cm = getClassMeta(typeName);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      BeanMap&lt;?&gt; bm = m.getBeanSession().newBeanMap(cm.getInnerClass());<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>      // Iterate through all the entries in the map and set the individual field values.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      for (Map.Entry&lt;String,Object&gt; e : m.entrySet()) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>         String k = e.getKey();<a name="line.107"></a>
-<span class="sourceLineNo">108</span>         Object v = e.getValue();<a name="line.108"></a>
-<span class="sourceLineNo">109</span>         if (! k.equals(beanTypePropertyName)) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>            // Attempt to recursively cast child maps.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>            if (v instanceof ObjectMap)<a name="line.111"></a>
-<span class="sourceLineNo">112</span>               v = cast((ObjectMap)v);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>            bm.put(k, v);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>         }<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      }<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      return bm.getBean();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>   /**<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    * Gets the class metadata for the specified bean type name.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    *<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    * @param typeName The bean type name as defined by {@link Bean#typeName()}.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    *    Can include multi-dimensional array type names (e.g. &lt;js&gt;"X^^"&lt;/js&gt;).<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    * @return The class metadata for the bean.<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    */<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   public ClassMeta&lt;?&gt; getClassMeta(String typeName) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      if (isEmpty)<a name="line.127"></a>
-<span class="sourceLineNo">128</span>         return null;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      if (typeName == null)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>         return null;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      ClassMeta&lt;?&gt; cm = map.get(typeName);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      if (cm != null)<a name="line.132"></a>
-<span class="sourceLineNo">133</span>         return cm;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      if (typeName.charAt(typeName.length()-1) == '^') {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>         cm = getClassMeta(typeName.substring(0, typeName.length()-1));<a name="line.135"></a>
-<span class="sourceLineNo">136</span>         if (cm != null)<a name="line.136"></a>
-<span class="sourceLineNo">137</span>            cm = beanContext.getClassMeta(Array.newInstance(cm.innerClass, 1).getClass());<a name="line.137"></a>
-<span class="sourceLineNo">138</span>         map.put(typeName, cm);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>         return cm;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return null;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>   /**<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if this dictionary has an entry for the specified type name.<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    *<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    * @param typeName The bean type name.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if this dictionary has an entry for the specified type name.<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    */<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   public boolean hasName(String typeName) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      return getClassMeta(typeName) != null;<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">072</span>                  Object v = e.getValue();<a name="line.72"></a>
+<span class="sourceLineNo">073</span>                  ClassMeta&lt;?&gt; val = null;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>                  if (v instanceof Type)<a name="line.74"></a>
+<span class="sourceLineNo">075</span>                     val = beanContext.getClassMeta((Type)v);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>                  else if (v.getClass().isArray())<a name="line.76"></a>
+<span class="sourceLineNo">077</span>                     val = getTypedClassMeta(v);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>                  else<a name="line.78"></a>
+<span class="sourceLineNo">079</span>                     throw new BeanRuntimeException("Class ''{0}'' was passed to BeanRegistry but value of type ''{1}'' found in map is not a Type object.", c.getName(), v.getClass().getName());<a name="line.79"></a>
+<span class="sourceLineNo">080</span>                  map.put(typeName, val);<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>               Bean b = c.getAnnotation(Bean.class);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>               if (b == null || b.typeName().isEmpty())<a name="line.84"></a>
+<span class="sourceLineNo">085</span>                  throw new BeanRuntimeException("Class ''{0}'' was passed to BeanRegistry but it doesn't have a @Bean.typeName() annotation defined.", c.getName());<a name="line.85"></a>
+<span class="sourceLineNo">086</span>               map.put(b.typeName(), beanContext.getClassMeta(c));<a name="line.86"></a>
+<span class="sourceLineNo">087</span>            }<a name="line.87"></a>
+<span class="sourceLineNo">088</span>         }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      } catch (BeanRuntimeException e) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>         throw e;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      } catch (Exception e) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>         throw new BeanRuntimeException(e);<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>   private ClassMeta&lt;?&gt; getTypedClassMeta(Object array) {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      int len = Array.getLength(array);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      if (len == 0)<a name="line.98"></a>
+<span class="sourceLineNo">099</span>         throw new BeanRuntimeException("Map entry had an empty array value.");<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      Type type = (Type)Array.get(array, 0);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      Type[] args = new Type[len-1];<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      for (int i = 1; i &lt; len; i++)<a name="line.102"></a>
+<span class="sourceLineNo">103</span>         args[i-1] = (Type)Array.get(array, i);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      return beanContext.getClassMeta(type, args);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>   /**<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    * Converts the specified object map into a bean if it contains a &lt;js&gt;"_type"&lt;/js&gt; entry in it.<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    *<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    * @param m The object map to convert to a bean if possible.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    * @return The new bean, or the original &lt;code&gt;ObjectMap&lt;/code&gt; if no &lt;js&gt;"_type"&lt;/js&gt; entry was found.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   public Object cast(ObjectMap m) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      if (isEmpty)<a name="line.114"></a>
+<span class="sourceLineNo">115</span>         return m;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      Object o = m.get(beanTypePropertyName);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      if (o == null)<a name="line.117"></a>
+<span class="sourceLineNo">118</span>         return m;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      String typeName = o.toString();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      ClassMeta&lt;?&gt; cm = getClassMeta(typeName);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      BeanMap&lt;?&gt; bm = m.getBeanSession().newBeanMap(cm.getInnerClass());<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>      // Iterate through all the entries in the map and set the individual field values.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      for (Map.Entry&lt;String,Object&gt; e : m.entrySet()) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>         String k = e.getKey();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>         Object v = e.getValue();<a name="line.126"></a>
+<span class="sourceLineNo">127</span>         if (! k.equals(beanTypePropertyName)) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>            // Attempt to recursively cast child maps.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>            if (v instanceof ObjectMap)<a name="line.129"></a>
+<span class="sourceLineNo">130</span>               v = cast((ObjectMap)v);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>            bm.put(k, v);<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>      return bm.getBean();<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   }<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>   /**<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    * Gets the class metadata for the specified bean type name.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    *<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    * @param typeName The bean type name as defined by {@link Bean#typeName()}.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    *    Can include multi-dimensional array type names (e.g. &lt;js&gt;"X^^"&lt;/js&gt;).<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    * @return The class metadata for the bean.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    */<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   public ClassMeta&lt;?&gt; getClassMeta(String typeName) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      if (isEmpty)<a name="line.145"></a>
+<span class="sourceLineNo">146</span>         return null;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      if (typeName == null)<a name="line.147"></a>
+<span class="sourceLineNo">148</span>         return null;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      ClassMeta&lt;?&gt; cm = map.get(typeName);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      if (cm != null)<a name="line.150"></a>
+<span class="sourceLineNo">151</span>         return cm;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      if (typeName.charAt(typeName.length()-1) == '^') {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>         cm = getClassMeta(typeName.substring(0, typeName.length()-1));<a name="line.153"></a>
+<span class="sourceLineNo">154</span>         if (cm != null)<a name="line.154"></a>
+<span class="sourceLineNo">155</span>            cm = beanContext.getClassMeta(Array.newInstance(cm.innerClass, 1).getClass());<a name="line.155"></a>
+<span class="sourceLineNo">156</span>         map.put(typeName, cm);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>         return cm;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      return null;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>   /**<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    * Returns &lt;jk&gt;true&lt;/jk&gt; if this dictionary has an entry for the specified type name.<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    *<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    * @param typeName The bean type name.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    * @return &lt;jk&gt;true&lt;/jk&gt; if this dictionary has an entry for the specified type name.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    */<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   public boolean hasName(String typeName) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return getClassMeta(typeName) != null;<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/afa6a1d0/content/site/apidocs/src-html/org/apache/juneau/BeanSession.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/BeanSession.html b/content/site/apidocs/src-html/org/apache/juneau/BeanSession.html
index bc1cd60..4018b5f 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/BeanSession.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/BeanSession.html
@@ -621,7 +621,7 @@
 <span class="sourceLineNo">613</span>    * &lt;p&gt;<a name="line.613"></a>
 <span class="sourceLineNo">614</span>    *    If object is not a true bean, then throws a {@link BeanRuntimeException} with an explanation of why it's not a bean.<a name="line.614"></a>
 <span class="sourceLineNo">615</span>    *<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    * &lt;h6 class='topic'&gt;Example:&lt;/h6&gt;<a name="line.616"></a>
+<span class="sourceLineNo">616</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.616"></a>
 <span class="sourceLineNo">617</span>    * &lt;p class='bcode'&gt;<a name="line.617"></a>
 <span class="sourceLineNo">618</span>    *    &lt;jc&gt;// Construct a bean map around a bean instance&lt;/jc&gt;<a name="line.618"></a>
 <span class="sourceLineNo">619</span>    *    BeanMap&amp;lt;Person&amp;gt; bm = BeanContext.&lt;jsf&gt;DEFAULT&lt;/jsf&gt;.forBean(&lt;jk&gt;new&lt;/jk&gt; Person());<a name="line.619"></a>
@@ -663,7 +663,7 @@
 <span class="sourceLineNo">655</span>    * &lt;p&gt;<a name="line.655"></a>
 <span class="sourceLineNo">656</span>    *    If object is not a true bean, throws a {@link BeanRuntimeException} with an explanation of why it's not a bean.<a name="line.656"></a>
 <span class="sourceLineNo">657</span>    *<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    * &lt;h6 class='topic'&gt;Example:&lt;/h6&gt;<a name="line.658"></a>
+<span class="sourceLineNo">658</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.658"></a>
 <span class="sourceLineNo">659</span>    * &lt;p class='bcode'&gt;<a name="line.659"></a>
 <span class="sourceLineNo">660</span>    *    &lt;jc&gt;// Construct a bean map for new bean using only properties defined in a superclass&lt;/jc&gt;<a name="line.660"></a>
 <span class="sourceLineNo">661</span>    *    BeanMap&amp;lt;MySubBean&amp;gt; bm = BeanContext.&lt;jsf&gt;DEFAULT&lt;/jsf&gt;.forBean(&lt;jk&gt;new&lt;/jk&gt; MySubBean(), MySuperBean.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.661"></a>
@@ -701,7 +701,7 @@
 <span class="sourceLineNo">693</span>    * &lt;p&gt;<a name="line.693"></a>
 <span class="sourceLineNo">694</span>    *    If object is not a true bean, then throws a {@link BeanRuntimeException} with an explanation of why it's not a bean.<a name="line.694"></a>
 <span class="sourceLineNo">695</span>    *<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    * &lt;h6 class='topic'&gt;Example:&lt;/h6&gt;<a name="line.696"></a>
+<span class="sourceLineNo">696</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.696"></a>
 <span class="sourceLineNo">697</span>    * &lt;p class='bcode'&gt;<a name="line.697"></a>
 <span class="sourceLineNo">698</span>    *    &lt;jc&gt;// Construct a new bean map wrapped around a new Person object&lt;/jc&gt;<a name="line.698"></a>
 <span class="sourceLineNo">699</span>    *    BeanMap&amp;lt;Person&amp;gt; bm = BeanContext.&lt;jsf&gt;DEFAULT&lt;/jsf&gt;.newBeanMap(Person.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.699"></a>
@@ -743,7 +743,7 @@
 <span class="sourceLineNo">735</span>    * Creates a new empty bean of the specified type, except used for instantiating inner member classes that must<a name="line.735"></a>
 <span class="sourceLineNo">736</span>    *    be instantiated within another class instance.<a name="line.736"></a>
 <span class="sourceLineNo">737</span>    *<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    * &lt;h6 class='topic'&gt;Example:&lt;/h6&gt;<a name="line.738"></a>
+<span class="sourceLineNo">738</span>    * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;<a name="line.738"></a>
 <span class="sourceLineNo">739</span>    * &lt;p class='bcode'&gt;<a name="line.739"></a>
 <span class="sourceLineNo">740</span>    *    &lt;jc&gt;// Construct a new instance of the specified bean class&lt;/jc&gt;<a name="line.740"></a>
 <span class="sourceLineNo">741</span>    *    Person p = BeanContext.&lt;jsf&gt;DEFAULT&lt;/jsf&gt;.newBean(Person.&lt;jk&gt;class&lt;/jk&gt;);<a name="line.741"></a>
@@ -805,267 +805,203 @@
 <span class="sourceLineNo">797</span>   }<a name="line.797"></a>
 <span class="sourceLineNo">798</span><a name="line.798"></a>
 <span class="sourceLineNo">799</span>   /**<a name="line.799"></a>
-<span class="sourceLineNo">800</span>    * Returns the class type bound to this bean context if the specified class type<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    *    is from another bean context.<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    * &lt;p&gt;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    * For example, this method allows you to pass in an object from &lt;code&gt;BeanContext.&lt;jsf&gt;DEFAULT&lt;/jsf&gt;.getMapClassMeta(...)&lt;/code&gt;<a name="line.803"></a>
-<span class="sourceLineNo">804</span>    *    to any of the &lt;code&gt;ReaderParser.parse(Reader, ClassMeta, ParserContext)&lt;/code&gt; methods, and the parsers<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    *    will use this method to replace the class type with the one registered with the parser.<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    * This ensures that registered transforms are applied correctly.<a name="line.806"></a>
-<span class="sourceLineNo">807</span>    *<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    * @param &lt;T&gt; The class type.<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    * @param cm The class type.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    * @return The class type bound by this bean context.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    */<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   public final &lt;T&gt; ClassMeta&lt;T&gt; normalizeClassMeta(ClassMeta&lt;T&gt; cm) {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>      return ctx.normalizeClassMeta(cm);<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   }<a name="line.814"></a>
-<span class="sourceLineNo">815</span><a name="line.815"></a>
-<span class="sourceLineNo">816</span>   /**<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    * Returns a {@code ClassMeta} wrapper around a {@link Class} object.<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    *<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    * @param &lt;T&gt; The class type being wrapped.<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    * @param c The class being wrapped.<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    * @return The class meta object containing information about the class.<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    */<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   public final &lt;T&gt; ClassMeta&lt;T&gt; getClassMeta(Class&lt;T&gt; c) {<a name="line.823"></a>
-<span class="sourceLineNo">824</span>      return ctx.getClassMeta(c);<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   }<a name="line.825"></a>
-<span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>   /**<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    * Returns a {@code ClassMeta} wrapper around a {@link Class} or {@link Type} object.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    *<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    * @param &lt;T&gt; The class type being wrapped.<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    * @param c The class being wrapped.<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    * @return The class meta object containing information about the class.<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    */<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   public final &lt;T&gt; ClassMeta&lt;T&gt; getClassMeta(Object c) {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      return ctx.getClassMeta(c);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>   }<a name="line.836"></a>
-<span class="sourceLineNo">837</span><a name="line.837"></a>
-<span class="sourceLineNo">838</span>   /**<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    * Returns a {@link ClassMeta} wrapper around a {@link Map} or {@link Collection} class.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>    * &lt;p&gt;<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    * Handles the following object arrays:<a name="line.841"></a>
-<span class="sourceLineNo">842</span>    * &lt;ul&gt;<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    *    &lt;li&gt;&lt;code&gt;Object[2]&lt;/code&gt; containing &lt;code&gt;{Class&amp;lt;? extends Collection&amp;gt;, Object}&lt;/code&gt;<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    *       where the 2nd entry is the entry type which can be a Class/Type or another array.<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    *    &lt;li&gt;&lt;code&gt;Object[3]&lt;/code&gt; containing &lt;code&gt;{Class&amp;lt;? extends Map&amp;gt;, Object, Object}&lt;/code&gt;<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    *       where the 2nd entry is the key type which can be a Class/Type and 3rd entry is the value type which can be a Class/Type or another array.<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    * &lt;/ul&gt;<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    *<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    * @param c The object array being resolved.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    * @return The class meta object containing information about the class.<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    */<a name="line.851"></a>
-<span class="sourceLineNo">852</span>   public final &lt;T&gt; ClassMeta&lt;T&gt; getClassMeta(Object...c) {<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      return ctx.getClassMeta(c);<a name="line.853"></a>
-<span class="sourceLineNo">854</span>   }<a name="line.854"></a>
-<span class="sourceLineNo">855</span><a name="line.855"></a>
-<span class="sourceLineNo">856</span>   /**<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    * Convenience method for creating a {@link Map} class meta.<a name="line.857"></a>
-<span class="sourceLineNo">858</span>    * &lt;p&gt;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    * Equivalent to calling &lt;code&gt;getClassMeta(c, keyType, valueType)&lt;/code&gt;.<a name="line.859"></a>
+<span class="sourceLineNo">800</span>    * Returns a {@code ClassMeta} wrapper around a {@link Class} object.<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    *<a name="line.801"></a>
+<span class="sourceLineNo">802</span>    * @param &lt;T&gt; The class type being wrapped.<a name="line.802"></a>
+<span class="sourceLineNo">803</span>    * @param c The class being wrapped.<a name="line.803"></a>
+<span class="sourceLineNo">804</span>    * @return The class meta object containing information about the class.<a name="line.804"></a>
+<span class="sourceLineNo">805</span>    */<a name="line.805"></a>
+<span class="sourceLineNo">806</span>   public final &lt;T&gt; ClassMeta&lt;T&gt; getClassMeta(Class&lt;T&gt; c) {<a name="line.806"></a>
+<span class="sourceLineNo">807</span>      return ctx.getClassMeta(c);<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>    * Used to resolve &lt;code&gt;ClassMetas&lt;/code&gt; of type &lt;code&gt;Collection&lt;/code&gt; and &lt;code&gt;Map&lt;/code&gt; that have<a name="line.811"></a>
+<span class="sourceLineNo">812</span>    * &lt;code&gt;ClassMeta&lt;/code&gt; values that themselves could be collections or maps.<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    * &lt;p&gt;<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    * &lt;code&gt;Collection&lt;/code&gt; meta objects are assumed to be followed by zero or one meta objects indicating the element type.<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    * &lt;p&gt;<a name="line.815"></a>
+<span class="sourceLineNo">816</span>    * &lt;code&gt;Map&lt;/code&gt; meta objects are assumed to be followed by zero or two meta objects indicating the key and value types.<a name="line.816"></a>
+<span class="sourceLineNo">817</span>    * &lt;p&gt;<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    * The array can be arbitrarily long to indicate arbitrarily complex data structures.<a name="line.818"></a>
+<span class="sourceLineNo">819</span>    *<a name="line.819"></a>
+<span class="sourceLineNo">820</span>    * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    * &lt;ul&gt;<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    *    &lt;li&gt;&lt;code&gt;getClassMeta(String.&lt;jk&gt;class&lt;/jk&gt;);&lt;/code&gt; - A normal type.<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    *    &lt;li&gt;&lt;code&gt;getClassMeta(List.&lt;jk&gt;class&lt;/jk&gt;);&lt;/code&gt; - A list containing objects.<a name="line.823"></a>
+<span class="sourceLineNo">824</span>    *    &lt;li&gt;&lt;code&gt;getClassMeta(List.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);&lt;/code&gt; - A list containing strings.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    *    &lt;li&gt;&lt;code&gt;getClassMeta(LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);&lt;/code&gt; - A linked-list containing strings.<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    *    &lt;li&gt;&lt;code&gt;getClassMeta(LinkedList.&lt;jk&gt;class&lt;/jk&gt;, LinkedList.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);&lt;/code&gt; - A linked-list containing linked-lists of strings.<a name="line.826"></a>
+<span class="sourceLineNo">827</span>    *    &lt;li&gt;&lt;code&gt;getClassMeta(Map.&lt;jk&gt;class&lt;/jk&gt;);&lt;/code&gt; - A map containing object keys/values.<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    *    &lt;li&gt;&lt;code&gt;getClassMeta(Map.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;, String.&lt;jk&gt;class&lt;/jk&gt;);&lt;/code&gt; - A map containing string keys/values.<a name="line.828"></a>
+<span class="sourceLineNo">829</span>    *    &lt;li&gt;&lt;code&gt;getClassMeta(Map.&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;);&lt;/code&gt; - A map containing string keys and values of lists containing beans.<a name="line.829"></a>
+<span class="sourceLineNo">830</span>    * &lt;/ul&gt;<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    *<a name="line.831"></a>
+<span class="sourceLineNo">832</span>    * @param type The class to resolve.<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    * @param args The type arguments of the class if it's a collection or map.<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    *    &lt;br&gt;Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    *    &lt;br&gt;Ignored if the main type is not a map or collection.<a name="line.836"></a>
+<span class="sourceLineNo">837</span>    * @return The class meta.<a name="line.837"></a>
+<span class="sourceLineNo">838</span>    */<a name="line.838"></a>
+<span class="sourceLineNo">839</span>   public final &lt;T&gt; ClassMeta&lt;T&gt; getClassMeta(Type type, Type...args) {<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      return ctx.getClassMeta(type, args);<a name="line.840"></a>
+<span class="sourceLineNo">841</span>   }<a name="line.841"></a>
+<span class="sourceLineNo">842</span><a name="line.842"></a>
+<span class="sourceLineNo">843</span>   /**<a name="line.843"></a>
+<span class="sourceLineNo">844</span>    * Given an array of {@link Class} objects, returns an array of corresponding {@link ClassMeta} objects.<a name="line.844"></a>
+<span class="sourceLineNo">845</span>    * Constructs a new array on each call.<a name="line.845"></a>
+<span class="sourceLineNo">846</span>    *<a name="line.846"></a>
+<span class="sourceLineNo">847</span>    * @param classes The array of classes to get class metas for.<a name="line.847"></a>
+<span class="sourceLineNo">848</span>    * @return An array of {@link ClassMeta} objects corresponding to the classes.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    */<a name="line.849"></a>
+<span class="sourceLineNo">850</span>   public final ClassMeta&lt;?&gt;[] getClassMetas(Class&lt;?&gt;[] classes) {<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      assertFieldNotNull(classes, "classes");<a name="line.851"></a>
+<span class="sourceLineNo">852</span>      ClassMeta&lt;?&gt;[] cm = new ClassMeta&lt;?&gt;[classes.length];<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      for (int i = 0; i &lt; classes.length; i++)<a name="line.853"></a>
+<span class="sourceLineNo">854</span>         cm[i] = getClassMeta(classes[i]);<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      return cm;<a name="line.855"></a>
+<span class="sourceLineNo">856</span>   }<a name="line.856"></a>
+<span class="sourceLineNo">857</span><a name="line.857"></a>
+<span class="sourceLineNo">858</span>   /**<a name="line.858"></a>
+<span class="sourceLineNo">859</span>    * Shortcut for calling {@code getClassMeta(o.getClass())}.<a name="line.859"></a>
 <span class="sourceLineNo">860</span>    *<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    * @param &lt;K&gt; The map key class type.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    * @param &lt;V&gt; The map value class type.<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    * @param &lt;T&gt; The map class type.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    * @param c The map class type.<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    * @param keyType The map key class type.<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    * @param valueType The map value class type.<a name="line.866"></a>
-<span class="sourceLineNo">867</span>    * @return If the key and value types are Object, returns a cached {@link ClassMeta} object.&lt;br&gt;<a name="line.867"></a>
-<span class="sourceLineNo">868</span>    *    Otherwise, returns a new {@link ClassMeta} object every time.<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    */<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   public final &lt;K,V,T extends Map&lt;K,V&gt;&gt; ClassMeta&lt;T&gt; getMapClassMeta(Class&lt;T&gt; c, Class&lt;K&gt; keyType, Class&lt;V&gt; valueType) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>      return getClassMeta(c, keyType, valueType);<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>    * Convenience method for creating a {@link Collection} class meta.<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    * &lt;p&gt;<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    * Equivalent to calling &lt;code&gt;getClassMeta(c, keyType, valueType)&lt;/code&gt;.<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    *<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    * @param &lt;E&gt; The collection element class type.<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    * @param &lt;T&gt; The collection class type.<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    * @param c The collection class type.<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    * @param elementType The collection element class type.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    * @return If the element type is &lt;code&gt;OBJECT&lt;/code&gt;, returns a cached {@link ClassMeta} object.&lt;br&gt;<a name="line.883"></a>
-<span class="sourceLineNo">884</span>    *    Otherwise, returns a new {@link ClassMeta} object every time.<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    */<a name="line.885"></a>
-<span class="sourceLineNo">886</span>   public final &lt;E,T extends Collection&lt;E&gt;&gt; ClassMeta&lt;T&gt; getCollectionClassMeta(Class&lt;T&gt; c, Class&lt;E&gt; elementType) {<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      return getClassMeta(c, getClassMeta(elementType));<a name="line.887"></a>
-<span class="sourceLineNo">888</span>   }<a name="line.888"></a>
-<span class="sourceLineNo">889</span><a name="line.889"></a>
-<span class="sourceLineNo">890</span>   /**<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    * Constructs a ClassMeta object given the specified object and parameters.<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    *<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    * @param o The parent class type.<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    *    Can be any of the following types:<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    *    &lt;ul class='spaced-list'&gt;<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    *       &lt;li&gt;{@link ClassMeta} object, which just returns the same object.<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    *       &lt;li&gt;{@link Class} object (e.g. &lt;code&gt;String.&lt;jk&gt;class&lt;/jk&gt;&lt;/code&gt;).<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    *       &lt;li&gt;{@link Type} object (e.g. {@link ParameterizedType} or {@link GenericArrayType}.<a name="line.898"></a>
-<span class="sourceLineNo">899</span>    *       &lt;li&gt;Anything else is interpreted as {@code getClassMeta(o.getClass(), parameters);}<a name="line.899"></a>
-<span class="sourceLineNo">900</span>    *    &lt;/ul&gt;<a name="line.900"></a>
-<span class="sourceLineNo">901</span>    * @return A ClassMeta object, or &lt;jk&gt;null&lt;/jk&gt; if the object is null.<a name="line.901"></a>
-<span class="sourceLineNo">902</span>    */<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   public final ClassMeta getClassMeta(Type o) {<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      return ctx.getClassMeta(o, null);<a name="line.904"></a>
-<span class="sourceLineNo">905</span>   }<a name="line.905"></a>
-<span class="sourceLineNo">906</span><a name="line.906"></a>
-<span class="sourceLineNo">907</span>   /**<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    * Given an array of {@link Class} objects, returns an array of corresponding {@link ClassMeta} objects.<a name="line.908"></a>
-<span class="sourceLineNo">909</span>    * Constructs a new array on each call.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>    *<a name="line.910"></a>
-<span class="sourceLineNo">911</span>    * @param classes The array of classes to get class metas for.<a name="line.911"></a>
-<span class="sourceLineNo">912</span>    * @return An array of {@link ClassMeta} objects corresponding to the classes.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.912"></a>
-<span class="sourceLineNo">913</span>    */<a name="line.913"></a>
-<span class="sourceLineNo">914</span>   public final ClassMeta&lt;?&gt;[] getClassMetas(Class&lt;?&gt;[] classes) {<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      assertFieldNotNull(classes, "classes");<a name="line.915"></a>
-<span class="sourceLineNo">916</span>      ClassMeta&lt;?&gt;[] cm = new ClassMeta&lt;?&gt;[classes.length];<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      for (int i = 0; i &lt; classes.length; i++)<a name="line.917"></a>
-<span class="sourceLineNo">918</span>         cm[i] = getClassMeta(classes[i]);<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      return cm;<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   }<a name="line.920"></a>
-<span class="sourceLineNo">921</span><a name="line.921"></a>
-<span class="sourceLineNo">922</span>   /**<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    * Shortcut for calling {@code getClassMeta(o.getClass())}.<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    *<a name="line.924"></a>
-<span class="sourceLineNo">925</span>    * @param &lt;T&gt; The class of the object being passed in.<a name="line.925"></a>
-<span class="sourceLineNo">926</span>    * @param o The class to find the class type for.<a name="line.926"></a>
-<span class="sourceLineNo">927</span>    * @return The ClassMeta object, or &lt;jk&gt;null&lt;/jk&gt; if {@code o} is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>    */<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   public final &lt;T&gt; ClassMeta&lt;T&gt; getClassMetaForObject(T o) {<a name="line.929"></a>
-<span class="sourceLineNo">930</span>      if (o == null)<a name="line.930"></a>
-<span class="sourceLineNo">931</span>         return null;<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      return (ClassMeta&lt;T&gt;)getClassMeta(o.getClass());<a name="line.932"></a>
-<span class="sourceLineNo">933</span>   }<a name="line.933"></a>
-<span class="sourceLineNo">934</span><a name="line.934"></a>
-<span class="sourceLineNo">935</span>   /**<a name="line.935"></a>
-<span class="sourceLineNo">936</span>    * Returns the type property name as defined by {@link BeanContext#BEAN_beanTypePropertyName}.<a name="line.936"></a>
-<span class="sourceLineNo">937</span>    *<a name="line.937"></a>
-<span class="sourceLineNo">938</span>    * @return The type property name.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.938"></a>
-<span class="sourceLineNo">939</span>    */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>   public final String getBeanTypePropertyName() {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      return ctx.beanTypePropertyName;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>   }<a name="line.942"></a>
-<span class="sourceLineNo">943</span><a name="line.943"></a>
-<span class="sourceLineNo">944</span>   /**<a name="line.944"></a>
-<span class="sourceLineNo">945</span>    * Returns the bean registry defined in this bean context defined by {@link BeanContext#BEAN_beanDictionary}.<a name="line.945"></a>
-<span class="sourceLineNo">946</span>    *<a name="line.946"></a>
-<span class="sourceLineNo">947</span>    * @return The bean registry defined in this bean context.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.947"></a>
-<span class="sourceLineNo">948</span>    */<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   public final BeanRegistry getBeanRegistry() {<a name="line.949"></a>
-<span class="sourceLineNo">950</span>      return ctx.beanRegistry;<a name="line.950"></a>
-<span class="sourceLineNo">951</span>   }<a name="line.951"></a>
-<span class="sourceLineNo">952</span><a name="line.952"></a>
-<span class="sourceLineNo">953</span>   /**<a name="line.953"></a>
-<span class="sourceLineNo">954</span>    * Creates a reusable {@link StringBuilder} object from an internal pool.<a name="line.954"></a>
-<span class="sourceLineNo">955</span>    * &lt;p&gt;<a name="line.955"></a>
-<span class="sourceLineNo">956</span>    * String builders are returned to the pool by calling {@link #returnStringBuilder(StringBuilder)}.<a name="line.956"></a>
-<span class="sourceLineNo">957</span>    *<a name="line.957"></a>
-<span class="sourceLineNo">958</span>    * @return A new or previously returned string builder.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>    */<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   public final StringBuilder getStringBuilder() {<a name="line.960"></a>
-<span class="sourceLineNo">961</span>      if (sbStack.isEmpty())<a name="line.961"></a>
-<span class="sourceLineNo">962</span>         return new StringBuilder();<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      return sbStack.pop();<a name="line.963"></a>
+<span class="sourceLineNo">861</span>    * @param &lt;T&gt; The class of the object being passed in.<a name="line.861"></a>
+<span class="sourceLineNo">862</span>    * @param o The class to find the class type for.<a name="line.862"></a>
+<span class="sourceLineNo">863</span>    * @return The ClassMeta object, or &lt;jk&gt;null&lt;/jk&gt; if {@code o} is &lt;jk&gt;null&lt;/jk&gt;.<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    */<a name="line.864"></a>
+<span class="sourceLineNo">865</span>   public final &lt;T&gt; ClassMeta&lt;T&gt; getClassMetaForObject(T o) {<a name="line.865"></a>
+<span class="sourceLineNo">866</span>      if (o == null)<a name="line.866"></a>
+<span class="sourceLineNo">867</span>         return null;<a name="line.867"></a>
+<span class="sourceLineNo">868</span>      return (ClassMeta&lt;T&gt;)getClassMeta(o.getClass());<a name="line.868"></a>
+<span class="sourceLineNo">869</span>   }<a name="line.869"></a>
+<span class="sourceLineNo">870</span><a name="line.870"></a>
+<span class="sourceLineNo">871</span>   /**<a name="line.871"></a>
+<span class="sourceLineNo">872</span>    * Returns the type property name as defined by {@link BeanContext#BEAN_beanTypePropertyName}.<a name="line.872"></a>
+<span class="sourceLineNo">873</span>    *<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    * @return The type property name.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    */<a name="line.875"></a>
+<span class="sourceLineNo">876</span>   public final String getBeanTypePropertyName() {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>      return ctx.beanTypePropertyName;<a name="line.877"></a>
+<span class="sourceLineNo">878</span>   }<a name="line.878"></a>
+<span class="sourceLineNo">879</span><a name="line.879"></a>
+<span class="sourceLineNo">880</span>   /**<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    * Returns the bean registry defined in this bean context defined by {@link BeanContext#BEAN_beanDictionary}.<a name="line.881"></a>
+<span class="sourceLineNo">882</span>    *<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    * @return The bean registry defined in this bean context.  Never &lt;jk&gt;null&lt;/jk&gt;.<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    */<a name="line.884"></a>
+<span class="sourceLineNo">885</span>   public final BeanRegistry getBeanRegistry() {<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      return ctx.beanRegistry;<a name="line.886"></a>
+<span class="sourceLineNo">887</span>   }<a name="line.887"></a>
+<span class="sourceLineNo">888</span><a name="line.888"></a>
+<span class="sourceLineNo">889</span>   /**<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    * Creates a reusable {@link StringBuilder} object from an internal pool.<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    * &lt;p&gt;<a name="line.891"></a>
+<span class="sourceLineNo">892</span>    * String builders are returned to the pool by calling {@link #returnStringBuilder(StringBuilder)}.<a name="line.892"></a>
+<span class="sourceLineNo">893</span>    *<a name="line.893"></a>
+<span class="sourceLineNo">894</span>    * @return A new or previously returned string builder.<a name="line.894"></a>
+<span class="sourceLineNo">895</span>    */<a name="line.895"></a>
+<span class="sourceLineNo">896</span>   public final StringBuilder getStringBuilder() {<a name="line.896"></a>
+<span class="sourceLineNo">897</span>      if (sbStack.isEmpty())<a name="line.897"></a>
+<span class="sourceLineNo">898</span>         return new StringBuilder();<a name="line.898"></a>
+<span class="sourceLineNo">899</span>      return sbStack.pop();<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 a {@link StringBuilder} object back into the internal reuse pool.<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    *<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    * @param sb The string builder to return to the pool.  No-op if &lt;jk&gt;null&lt;/jk&gt;.<a name="line.905"></a>
+<span class="sourceLineNo">906</span>    */<a name="line.906"></a>
+<span class="sourceLineNo">907</span>   public final void returnStringBuilder(StringBuilder sb) {<a name="line.907"></a>
+<span class="sourceLineNo">908</span>      if (sb == null)<a name="line.908"></a>
+<span class="sourceLineNo">909</span>         return;<a name="line.909"></a>
+<span class="sourceLineNo">910</span>      sb.setLength(0);<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      sbStack.push(sb);<a name="line.911"></a>
+<span class="sourceLineNo">912</span>   }<a name="line.912"></a>
+<span class="sourceLineNo">913</span><a name="line.913"></a>
+<span class="sourceLineNo">914</span>   /**<a name="line.914"></a>
+<span class="sourceLineNo">915</span>    * Returns a reusable {@link ClassMeta} representation for the class &lt;code&gt;Object&lt;/code&gt;.<a name="line.915"></a>
+<span class="sourceLineNo">916</span>    * &lt;p&gt;<a name="line.916"></a>
+<span class="sourceLineNo">917</span>    * This &lt;code&gt;ClassMeta&lt;/code&gt; is often used to represent "any object type" when an object type<a name="line.917"></a>
+<span class="sourceLineNo">918</span>    *    is not known.<a name="line.918"></a>
+<span class="sourceLineNo">919</span>    * &lt;p&gt;<a name="line.919"></a>
+<span class="sourceLineNo">920</span>    * This method is identical to calling &lt;code&gt;getClassMeta(Object.&lt;jk&gt;class&lt;/jk&gt;)&lt;/code&gt; but uses<a name="line.920"></a>
+<span class="sourceLineNo">921</span>    *    a cached copy to avoid a hashmap lookup.<a name="line.921"></a>
+<span class="sourceLineNo">922</span>    *<a name="line.922"></a>
+<span class="sourceLineNo">923</span>    * @return The {@link ClassMeta} object associated with the &lt;code&gt;Object&lt;/code&gt; class.<a name="line.923"></a>
+<span class="sourceLineNo">924</span>    */<a name="line.924"></a>
+<span class="sourceLineNo">925</span>   public final ClassMeta&lt;Object&gt; object() {<a name="line.925"></a>
+<span class="sourceLineNo">926</span>      return ctx.cmObject;<a name="line.926"></a>
+<span class="sourceLineNo">927</span>   }<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>    * Returns a reusable {@link ClassMeta} representation for the class &lt;code&gt;String&lt;/code&gt;.<a name="line.930"></a>
+<span class="sourceLineNo">931</span>    * &lt;p&gt;<a name="line.931"></a>
+<span class="sourceLineNo">932</span>    * This &lt;code&gt;ClassMeta&lt;/code&gt; is often used to represent key types in maps.<a name="line.932"></a>
+<span class="sourceLineNo">933</span>    * &lt;p&gt;<a name="line.933"></a>
+<span class="sourceLineNo">934</span>    * This method is identical to calling &lt;code&gt;getClassMeta(String.&lt;jk&gt;class&lt;/jk&gt;)&lt;/code&gt; but uses<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    *    a cached copy to avoid a hashmap lookup.<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    *<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    * @return The {@link ClassMeta} object associated with the &lt;code&gt;String&lt;/code&gt; class.<a name="line.937"></a>
+<span class="sourceLineNo">938</span>    */<a name="line.938"></a>
+<span class="sourceLineNo">939</span>   public final ClassMeta&lt;String&gt; string() {<a name="line.939"></a>
+<span class="sourceLineNo">940</span>      return ctx.cmString;<a name="line.940"></a>
+<span class="sourceLineNo">941</span>   }<a name="line.941"></a>
+<span class="sourceLineNo">942</span><a name="line.942"></a>
+<span class="sourceLineNo">943</span>   /**<a name="line.943"></a>
+<span class="sourceLineNo">944</span>    * Returns a reusable {@link ClassMeta} representation for the class &lt;code&gt;Class&lt;/code&gt;.<a name="line.944"></a>
+<span class="sourceLineNo">945</span>    * &lt;p&gt;<a name="line.945"></a>
+<span class="sourceLineNo">946</span>    * This &lt;code&gt;ClassMeta&lt;/code&gt; is often used to represent key types in maps.<a name="line.946"></a>
+<span class="sourceLineNo">947</span>    * &lt;p&gt;<a name="line.947"></a>
+<span class="sourceLineNo">948</span>    * This method is identical to calling &lt;code&gt;getClassMeta(Class.&lt;jk&gt;class&lt;/jk&gt;)&lt;/code&gt; but uses<a name="line.948"></a>
+<span class="sourceLineNo">949</span>    *    a cached copy to avoid a hashmap lookup.<a name="line.949"></a>
+<span class="sourceLineNo">950</span>    *<a name="line.950"></a>
+<span class="sourceLineNo">951</span>    * @return The {@link ClassMeta} object associated with the &lt;code&gt;String&lt;/code&gt; class.<a name="line.951"></a>
+<span class="sourceLineNo">952</span>    */<a name="line.952"></a>
+<span class="sourceLineNo">953</span>   public final ClassMeta&lt;Class&gt; _class() {<a name="line.953"></a>
+<span class="sourceLineNo">954</span>      return ctx.cmClass;<a name="line.954"></a>
+<span class="sourceLineNo">955</span>   }<a name="line.955"></a>
+<span class="sourceLineNo">956</span><a name="line.956"></a>
+<span class="sourceLineNo">957</span>   /**<a name="line.957"></a>
+<span class="sourceLineNo">958</span>    * Returns the classloader associated with this bean context.<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    *<a name="line.959"></a>
+<span class="sourceLineNo">960</span>    * @return The classloader associated with this bean context.<a name="line.960"></a>
+<span class="sourceLineNo">961</span>    */<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   public final ClassLoader getClassLoader() {<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      return ctx.classLoader;<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>    * Returns a {@link StringBuilder} object back into the internal reuse pool.<a name="line.967"></a>
-<span class="sourceLineNo">968</span>    *<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    * @param sb The string builder to return to the pool.  No-op if &lt;jk&gt;null&lt;/jk&gt;.<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    */<a name="line.970"></a>
-<span class="sourceLineNo">971</span>   public final void returnStringBuilder(StringBuilder sb) {<a name="line.971"></a>
-<span class="sourceLineNo">972</span>      if (sb == null)<a name="line.972"></a>
-<span class="sourceLineNo">973</span>         return;<a name="line.973"></a>
-<span class="sourceLineNo">974</span>      sb.setLength(0);<a name="line.974"></a>
-<span class="sourceLineNo">975</span>      sbStack.push(sb);<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   }<a name="line.976"></a>
-<span class="sourceLineNo">977</span><a name="line.977"></a>
-<span class="sourceLineNo">978</span>   /**<a name="line.978"></a>
-<span class="sourceLineNo">979</span>    * Returns a reusable {@link ClassMeta} representation for the class &lt;code&gt;Object&lt;/code&gt;.<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    * &lt;p&gt;<a name="line.980"></a>
-<span class="sourceLineNo">981</span>    * This &lt;code&gt;ClassMeta&lt;/code&gt; is often used to represent "any object type" when an object type<a name="line.981"></a>
-<span class="sourceLineNo">982</span>    *    is not known.<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    * &lt;p&gt;<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    * This method is identical to calling &lt;code&gt;getClassMeta(Object.&lt;jk&gt;class&lt;/jk&gt;)&lt;/code&gt; but uses<a name="line.984"></a>
-<span class="sourceLineNo">985</span>    *    a cached copy to avoid a hashmap lookup.<a name="line.985"></a>
-<span class="sourceLineNo">986</span>    *<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    * @return The {@link ClassMeta} object associated with the &lt;code&gt;Object&lt;/code&gt; class.<a name="line.987"></a>
-<span class="sourceLineNo">988</span>    */<a name="line.988"></a>
-<span class="sourceLineNo">989</span>   public final ClassMeta&lt;Object&gt; object() {<a name="line.989"></a>
-<span class="sourceLineNo">990</span>      return ctx.cmObject;<a name="line.990"></a>
-<span class="sourceLineNo">991</span>   }<a name="line.991"></a>
-<span class="sourceLineNo">992</span><a name="line.992"></a>
-<span class="sourceLineNo">993</span>   /**<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    * Returns a reusable {@link ClassMeta} representation for the class &lt;code&gt;String&lt;/code&gt;.<a name="line.994"></a>
-<span class="sourceLineNo">995</span>    * &lt;p&gt;<a name="line.995"></a>
-<span class="sourceLineNo">996</span>    * This &lt;code&gt;ClassMeta&lt;/code&gt; is often used to represent key types in maps.<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    * &lt;p&gt;<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    * This method is identical to calling &lt;code&gt;getClassMeta(String.&lt;jk&gt;class&lt;/jk&gt;)&lt;/code&gt; but uses<a name="line.998"></a>
-<span class="sourceLineNo">999</span>    *    a cached copy to avoid a hashmap lookup.<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    *<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>    * @return The {@link ClassMeta} object associated with the &lt;code&gt;String&lt;/code&gt; class.<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    */<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   public final ClassMeta&lt;String&gt; string() {<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>      return ctx.cmString;<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>   /**<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>    * Returns a reusable {@link ClassMeta} representation for the class &lt;code&gt;Class&lt;/code&gt;.<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>    * &lt;p&gt;<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>    * This &lt;code&gt;ClassMeta&lt;/code&gt; is often used to represent key types in maps.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    * &lt;p&gt;<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    * This method is identical to calling &lt;code&gt;getClassMeta(Class.&lt;jk&gt;class&lt;/jk&gt;)&lt;/code&gt; but uses<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    *    a cached copy to avoid a hashmap lookup.<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>    *<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>    * @return The {@link ClassMeta} object associated with the &lt;code&gt;String&lt;/code&gt; class.<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>    */<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>   public final ClassMeta&lt;Class&gt; _class() {<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      return ctx.cmClass;<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 the classloader associated with this bean context.<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    *<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>    * @return The classloader associated with this bean context.<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    */<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>   public final ClassLoader getClassLoader() {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>      return ctx.classLoader;<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>   /**<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    * Returns the media type specified for this session.<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    * &lt;p&gt;<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    * For example, &lt;js&gt;"application/json"&lt;/js&gt;.<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    *<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    * @return The media type for this session, or &lt;jk&gt;null&lt;/jk&gt; if not specified.<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>    */<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>   public final MediaType getMediaType() {<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>      return mediaType;<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>   @Override /* Session */<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>   public final ObjectMap asMap() {<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>      return super.asMap()<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>         .appendAll(ctx.asMap())<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>         .append("BeanSession", new ObjectMap()<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>            .append("locale", locale)<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>            .append("timeZone", timeZone)<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>         );<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>   @Override /* Session */<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>   public boolean close() throws BeanRuntimeException {<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>      if (super.close()) {<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>         if (debug &amp;&amp; hasWarnings())<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>            throw new BeanRuntimeException("Warnings occurred in session: \n" + StringUtils.join(getWarnings(), "\n"));<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>         return true;<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      }<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      return false;<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>   }<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>}<a name="line.1060"></a>
+<span class="sourceLineNo">967</span>    * Returns the media type specified for this session.<a name="line.967"></a>
+<span class="sourceLineNo">968</span>    * &lt;p&gt;<a name="line.968"></a>
+<span class="sourceLineNo">969</span>    * For example, &lt;js&gt;"application/json"&lt;/js&gt;.<a name="line.969"></a>
+<span class="sourceLineNo">970</span>    *<a name="line.970"></a>
+<span class="sourceLineNo">971</span>    * @return The media type for this session, or &lt;jk&gt;null&lt;/jk&gt; if not specified.<a name="line.971"></a>
+<span class="sourceLineNo">972</span>    */<a name="line.972"></a>
+<span class="sourceLineNo">973</span>   public final MediaType getMediaType() {<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      return mediaType;<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>   @Override /* Session */<a name="line.977"></a>
+<span class="sourceLineNo">978</span>   public final ObjectMap asMap() {<a name="line.978"></a>
+<span class="sourceLineNo">979</span>      return super.asMap()<a name="line.979"></a>
+<span class="sourceLineNo">980</span>         .appendAll(ctx.asMap())<a name="line.980"></a>
+<span class="sourceLineNo">981</span>         .append("BeanSession", new ObjectMap()<a name="line.981"></a>
+<span class="sourceLineNo">982</span>            .append("locale", locale)<a name="line.982"></a>
+<span class="sourceLineNo">983</span>            .append("timeZone", timeZone)<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><a name="line.986"></a>
+<span class="sourceLineNo">987</span>   @Override /* Session */<a name="line.987"></a>
+<span class="sourceLineNo">988</span>   public boolean close() throws BeanRuntimeException {<a name="line.988"></a>
+<span class="sourceLineNo">989</span>      if (super.close()) {<a name="line.989"></a>
+<span class="sourceLineNo">990</span>         if (debug &amp;&amp; hasWarnings())<a name="line.990"></a>
+<span class="sourceLineNo">991</span>            throw new BeanRuntimeException("Warnings occurred in session: \n" + StringUtils.join(getWarnings(), "\n"));<a name="line.991"></a>
+<span class="sourceLineNo">992</span>         return true;<a name="line.992"></a>
+<span class="sourceLineNo">993</span>      }<a name="line.993"></a>
+<span class="sourceLineNo">994</span>      return false;<a name="line.994"></a>
+<span class="sourceLineNo">995</span>   }<a name="line.995"></a>
+<span class="sourceLineNo">996</span>}<a name="line.996"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/afa6a1d0/content/site/apidocs/src-html/org/apache/juneau/ClassMeta.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/ClassMeta.html b/content/site/apidocs/src-html/org/apache/juneau/ClassMeta.html
index 0ba64aa..d6bfbd6 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/ClassMeta.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/ClassMeta.html
@@ -747,7 +747,7 @@
 <span class="sourceLineNo">739</span>    * @return The constructor, or &lt;jk&gt;null&lt;/jk&gt; if no no-arg constructor exists with the required visibility.<a name="line.739"></a>
 <span class="sourceLineNo">740</span>    */<a name="line.740"></a>
 <span class="sourceLineNo">741</span>   @SuppressWarnings({"rawtypes","unchecked"})<a name="line.741"></a>
-<span class="sourceLineNo">742</span>   protected static &lt;T&gt; Constructor&lt;? extends T&gt; findNoArgConstructor(Class&lt;T&gt; c, Visibility v) {<a name="line.742"></a>
+<span class="sourceLineNo">742</span>   protected static &lt;T&gt; Constructor&lt;? extends T&gt; findNoArgConstructor(Class&lt;?&gt; c, Visibility v) {<a name="line.742"></a>
 <span class="sourceLineNo">743</span>      int mod = c.getModifiers();<a name="line.743"></a>
 <span class="sourceLineNo">744</span>      if (Modifier.isAbstract(mod))<a name="line.744"></a>
 <span class="sourceLineNo">745</span>         return null;<a name="line.745"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/afa6a1d0/content/site/apidocs/src-html/org/apache/juneau/CoreApi.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/CoreApi.html b/content/site/apidocs/src-html/org/apache/juneau/CoreApi.html
index f84c961..eee5358 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/CoreApi.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/CoreApi.html
@@ -23,7 +23,7 @@
 <span class="sourceLineNo">015</span>/**<a name="line.15"></a>
 <span class="sourceLineNo">016</span> * Common super class for all core-API serializers, parsers, and serializer/parser groups.<a name="line.16"></a>
 <span class="sourceLineNo">017</span> *<a name="line.17"></a>
-<span class="sourceLineNo">018</span> * &lt;h6 class='topic'&gt;Description&lt;/h6&gt;<a name="line.18"></a>
+<span class="sourceLineNo">018</span> * &lt;h5 class='section'&gt;Description:&lt;/h5&gt;<a name="line.18"></a>
 <span class="sourceLineNo">019</span> * &lt;p&gt;<a name="line.19"></a>
 <span class="sourceLineNo">020</span> * Maintains an inner {@link ContextFactory} instance that can be used by serializer and parser subclasses<a name="line.20"></a>
 <span class="sourceLineNo">021</span> *    to work with beans in a consistent way.<a name="line.21"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/afa6a1d0/content/site/apidocs/src-html/org/apache/juneau/FormattedException.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/FormattedException.html b/content/site/apidocs/src-html/org/apache/juneau/FormattedException.html
index 1b796c1..b62eaf1 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/FormattedException.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/FormattedException.html
@@ -33,7 +33,7 @@
 <span class="sourceLineNo">025</span>    * Constructor.<a name="line.25"></a>
 <span class="sourceLineNo">026</span>    *<a name="line.26"></a>
 <span class="sourceLineNo">027</span>    * @param message The {@link MessageFormat}-style message.<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    * @param args The arguments in the message.<a name="line.28"></a>
+<span class="sourceLineNo">028</span>    * @param args Optional {@link MessageFormat}-style arguments.<a name="line.28"></a>
 <span class="sourceLineNo">029</span>    */<a name="line.29"></a>
 <span class="sourceLineNo">030</span>   public FormattedException(String message, Object...args) {<a name="line.30"></a>
 <span class="sourceLineNo">031</span>      super(args.length == 0 ? message : MessageFormat.format(message, args));<a name="line.31"></a>
@@ -44,7 +44,7 @@
 <span class="sourceLineNo">036</span>    *<a name="line.36"></a>
 <span class="sourceLineNo">037</span>    * @param causedBy The cause of this exception.<a name="line.37"></a>
 <span class="sourceLineNo">038</span>    * @param message The {@link MessageFormat}-style message.<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    * @param args The arguments in the message.<a name="line.39"></a>
+<span class="sourceLineNo">039</span>    * @param args Optional {@link MessageFormat}-style arguments.<a name="line.39"></a>
 <span class="sourceLineNo">040</span>    */<a name="line.40"></a>
 <span class="sourceLineNo">041</span>   public FormattedException(Throwable causedBy, String message, Object...args) {<a name="line.41"></a>
 <span class="sourceLineNo">042</span>      this(message, args);<a name="line.42"></a>

http://git-wip-us.apache.org/repos/asf/incubator-juneau-website/blob/afa6a1d0/content/site/apidocs/src-html/org/apache/juneau/FormattedRuntimeException.html
----------------------------------------------------------------------
diff --git a/content/site/apidocs/src-html/org/apache/juneau/FormattedRuntimeException.html b/content/site/apidocs/src-html/org/apache/juneau/FormattedRuntimeException.html
index 609c7dc..956b13a 100644
--- a/content/site/apidocs/src-html/org/apache/juneau/FormattedRuntimeException.html
+++ b/content/site/apidocs/src-html/org/apache/juneau/FormattedRuntimeException.html
@@ -33,7 +33,7 @@
 <span class="sourceLineNo">025</span>    * Constructor.<a name="line.25"></a>
 <span class="sourceLineNo">026</span>    *<a name="line.26"></a>
 <span class="sourceLineNo">027</span>    * @param message The {@link MessageFormat}-style message.<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    * @param args The arguments in the message.<a name="line.28"></a>
+<span class="sourceLineNo">028</span>    * @param args Optional {@link MessageFormat}-style arguments.<a name="line.28"></a>
 <span class="sourceLineNo">029</span>    */<a name="line.29"></a>
 <span class="sourceLineNo">030</span>   public FormattedRuntimeException(String message, Object...args) {<a name="line.30"></a>
 <span class="sourceLineNo">031</span>      super(args.length == 0 ? message : MessageFormat.format(message, args));<a name="line.31"></a>
@@ -44,7 +44,7 @@
 <span class="sourceLineNo">036</span>    *<a name="line.36"></a>
 <span class="sourceLineNo">037</span>    * @param causedBy The cause of this exception.<a name="line.37"></a>
 <span class="sourceLineNo">038</span>    * @param message The {@link MessageFormat}-style message.<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    * @param args The arguments in the message.<a name="line.39"></a>
+<span class="sourceLineNo">039</span>    * @param args Optional {@link MessageFormat}-style arguments.<a name="line.39"></a>
 <span class="sourceLineNo">040</span>    */<a name="line.40"></a>
 <span class="sourceLineNo">041</span>   public FormattedRuntimeException(Throwable causedBy, String message, Object...args) {<a name="line.41"></a>
 <span class="sourceLineNo">042</span>      this(message, args);<a name="line.42"></a>