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> * <h6 class='topic'>Description</h6><a name="line.27"></a>
+<span class="sourceLineNo">027</span> * <h5 class='section'>Description:</h5><a name="line.27"></a>
<span class="sourceLineNo">028</span> * <p><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> * <h6 class='topic'>Example:</h6><a name="line.173"></a>
+<span class="sourceLineNo">173</span> * <h5 class='section'>Example:</h5><a name="line.173"></a>
<span class="sourceLineNo">174</span> * <p class='bcode'><a name="line.174"></a>
<span class="sourceLineNo">175</span> * <jc>// Construct a bean with a 'birthDate' Date field</jc><a name="line.175"></a>
<span class="sourceLineNo">176</span> * Person p = <jk>new</jk> 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> * <h6 class='topic'>Example:</h6><a name="line.256"></a>
+<span class="sourceLineNo">256</span> * <h5 class='section'>Example:</h5><a name="line.256"></a>
<span class="sourceLineNo">257</span> * <p class='bcode'><a name="line.257"></a>
<span class="sourceLineNo">258</span> * <jc>// Construct a bean with a 'birthDate' Date field</jc><a name="line.258"></a>
<span class="sourceLineNo">259</span> * Person p = <jk>new</jk> 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> * <h6 class='topic'>Example:</h6><a name="line.297"></a>
+<span class="sourceLineNo">297</span> * <h5 class='section'>Example:</h5><a name="line.297"></a>
<span class="sourceLineNo">298</span> * <p class='bcode'><a name="line.298"></a>
<span class="sourceLineNo">299</span> * aPersonBean.load(<js>"{name:'John Smith',age:21}"</js>)<a name="line.299"></a>
<span class="sourceLineNo">300</span> * </p><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> * <p><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> * <h6 class='topic'>Example:</h6><a name="line.25"></a>
+<span class="sourceLineNo">025</span> * <h5 class='section'>Example:</h5><a name="line.25"></a>
<span class="sourceLineNo">026</span> * <p class='bcode'><a name="line.26"></a>
<span class="sourceLineNo">027</span> * <jc>// Construct a new bean</jc><a name="line.27"></a>
<span class="sourceLineNo">028</span> * Person p = <jk>new</jk> 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> * <h6 class='topic'>Description</h6><a name="line.32"></a>
+<span class="sourceLineNo">032</span> * <h5 class='section'>Description:</h5><a name="line.32"></a>
<span class="sourceLineNo">033</span> * <p><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<?,?> m = (Map<?,?>)c.newInstance();<a name="line.69"></a>
<span class="sourceLineNo">070</span> for (Map.Entry<?,?> 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<?> 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 <js>"_type"</js> 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 <code>ObjectMap</code> if no <js>"_type"</js> 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<?> cm = getClassMeta(typeName);<a name="line.102"></a>
-<span class="sourceLineNo">103</span> BeanMap<?> 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<String,Object> 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. <js>"X^^"</js>).<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<?> 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<?> 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 <jk>true</jk> 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 <jk>true</jk> 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<?> 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<?> 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 < 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 <js>"_type"</js> 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 <code>ObjectMap</code> if no <js>"_type"</js> 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<?> cm = getClassMeta(typeName);<a name="line.120"></a>
+<span class="sourceLineNo">121</span> BeanMap<?> 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<String,Object> 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. <js>"X^^"</js>).<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<?> 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<?> 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 <jk>true</jk> 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 <jk>true</jk> 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> * <p><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> * <h6 class='topic'>Example:</h6><a name="line.616"></a>
+<span class="sourceLineNo">616</span> * <h5 class='section'>Example:</h5><a name="line.616"></a>
<span class="sourceLineNo">617</span> * <p class='bcode'><a name="line.617"></a>
<span class="sourceLineNo">618</span> * <jc>// Construct a bean map around a bean instance</jc><a name="line.618"></a>
<span class="sourceLineNo">619</span> * BeanMap&lt;Person&gt; bm = BeanContext.<jsf>DEFAULT</jsf>.forBean(<jk>new</jk> Person());<a name="line.619"></a>
@@ -663,7 +663,7 @@
<span class="sourceLineNo">655</span> * <p><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> * <h6 class='topic'>Example:</h6><a name="line.658"></a>
+<span class="sourceLineNo">658</span> * <h5 class='section'>Example:</h5><a name="line.658"></a>
<span class="sourceLineNo">659</span> * <p class='bcode'><a name="line.659"></a>
<span class="sourceLineNo">660</span> * <jc>// Construct a bean map for new bean using only properties defined in a superclass</jc><a name="line.660"></a>
<span class="sourceLineNo">661</span> * BeanMap&lt;MySubBean&gt; bm = BeanContext.<jsf>DEFAULT</jsf>.forBean(<jk>new</jk> MySubBean(), MySuperBean.<jk>class</jk>);<a name="line.661"></a>
@@ -701,7 +701,7 @@
<span class="sourceLineNo">693</span> * <p><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> * <h6 class='topic'>Example:</h6><a name="line.696"></a>
+<span class="sourceLineNo">696</span> * <h5 class='section'>Example:</h5><a name="line.696"></a>
<span class="sourceLineNo">697</span> * <p class='bcode'><a name="line.697"></a>
<span class="sourceLineNo">698</span> * <jc>// Construct a new bean map wrapped around a new Person object</jc><a name="line.698"></a>
<span class="sourceLineNo">699</span> * BeanMap&lt;Person&gt; bm = BeanContext.<jsf>DEFAULT</jsf>.newBeanMap(Person.<jk>class</jk>);<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> * <h6 class='topic'>Example:</h6><a name="line.738"></a>
+<span class="sourceLineNo">738</span> * <h5 class='section'>Example:</h5><a name="line.738"></a>
<span class="sourceLineNo">739</span> * <p class='bcode'><a name="line.739"></a>
<span class="sourceLineNo">740</span> * <jc>// Construct a new instance of the specified bean class</jc><a name="line.740"></a>
<span class="sourceLineNo">741</span> * Person p = BeanContext.<jsf>DEFAULT</jsf>.newBean(Person.<jk>class</jk>);<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> * <p><a name="line.802"></a>
-<span class="sourceLineNo">803</span> * For example, this method allows you to pass in an object from <code>BeanContext.<jsf>DEFAULT</jsf>.getMapClassMeta(...)</code><a name="line.803"></a>
-<span class="sourceLineNo">804</span> * to any of the <code>ReaderParser.parse(Reader, ClassMeta, ParserContext)</code> 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 <T> 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 <T> ClassMeta<T> normalizeClassMeta(ClassMeta<T> 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 <T> 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 <T> ClassMeta<T> getClassMeta(Class<T> 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 <T> 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 <T> ClassMeta<T> 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> * <p><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> * <ul><a name="line.842"></a>
-<span class="sourceLineNo">843</span> * <li><code>Object[2]</code> containing <code>{Class&lt;? extends Collection&gt;, Object}</code><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> * <li><code>Object[3]</code> containing <code>{Class&lt;? extends Map&gt;, Object, Object}</code><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> * </ul><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 <T> ClassMeta<T> 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> * <p><a name="line.858"></a>
-<span class="sourceLineNo">859</span> * Equivalent to calling <code>getClassMeta(c, keyType, valueType)</code>.<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 <T> 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 <T> ClassMeta<T> getClassMeta(Class<T> 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 <code>ClassMetas</code> of type <code>Collection</code> and <code>Map</code> that have<a name="line.811"></a>
+<span class="sourceLineNo">812</span> * <code>ClassMeta</code> values that themselves could be collections or maps.<a name="line.812"></a>
+<span class="sourceLineNo">813</span> * <p><a name="line.813"></a>
+<span class="sourceLineNo">814</span> * <code>Collection</code> 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> * <p><a name="line.815"></a>
+<span class="sourceLineNo">816</span> * <code>Map</code> 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> * <p><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> * <h5 class='section'>Examples:</h5><a name="line.820"></a>
+<span class="sourceLineNo">821</span> * <ul><a name="line.821"></a>
+<span class="sourceLineNo">822</span> * <li><code>getClassMeta(String.<jk>class</jk>);</code> - A normal type.<a name="line.822"></a>
+<span class="sourceLineNo">823</span> * <li><code>getClassMeta(List.<jk>class</jk>);</code> - A list containing objects.<a name="line.823"></a>
+<span class="sourceLineNo">824</span> * <li><code>getClassMeta(List.<jk>class</jk>, String.<jk>class</jk>);</code> - A list containing strings.<a name="line.824"></a>
+<span class="sourceLineNo">825</span> * <li><code>getClassMeta(LinkedList.<jk>class</jk>, String.<jk>class</jk>);</code> - A linked-list containing strings.<a name="line.825"></a>
+<span class="sourceLineNo">826</span> * <li><code>getClassMeta(LinkedList.<jk>class</jk>, LinkedList.<jk>class</jk>, String.<jk>class</jk>);</code> - A linked-list containing linked-lists of strings.<a name="line.826"></a>
+<span class="sourceLineNo">827</span> * <li><code>getClassMeta(Map.<jk>class</jk>);</code> - A map containing object keys/values.<a name="line.827"></a>
+<span class="sourceLineNo">828</span> * <li><code>getClassMeta(Map.<jk>class</jk>, String.<jk>class</jk>, String.<jk>class</jk>);</code> - A map containing string keys/values.<a name="line.828"></a>
+<span class="sourceLineNo">829</span> * <li><code>getClassMeta(Map.<jk>class</jk>, String.<jk>class</jk>, List.<jk>class</jk>, MyBean.<jk>class</jk>);</code> - A map containing string keys and values of lists containing beans.<a name="line.829"></a>
+<span class="sourceLineNo">830</span> * </ul><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> * <br>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> * <br>Can be any of the following: {@link ClassMeta}, {@link Class}, {@link ParameterizedType}, {@link GenericArrayType}<a name="line.835"></a>
+<span class="sourceLineNo">836</span> * <br>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 <T> ClassMeta<T> 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 <jk>null</jk>.<a name="line.848"></a>
+<span class="sourceLineNo">849</span> */<a name="line.849"></a>
+<span class="sourceLineNo">850</span> public final ClassMeta<?>[] getClassMetas(Class<?>[] 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<?>[] cm = new ClassMeta<?>[classes.length];<a name="line.852"></a>
+<span class="sourceLineNo">853</span> for (int i = 0; i < 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 <K> The map key class type.<a name="line.861"></a>
-<span class="sourceLineNo">862</span> * @param <V> The map value class type.<a name="line.862"></a>
-<span class="sourceLineNo">863</span> * @param <T> 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.<br><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 <K,V,T extends Map<K,V>> ClassMeta<T> getMapClassMeta(Class<T> c, Class<K> keyType, Class<V> 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> * <p><a name="line.876"></a>
-<span class="sourceLineNo">877</span> * Equivalent to calling <code>getClassMeta(c, keyType, valueType)</code>.<a name="line.877"></a>
-<span class="sourceLineNo">878</span> *<a name="line.878"></a>
-<span class="sourceLineNo">879</span> * @param <E> The collection element class type.<a name="line.879"></a>
-<span class="sourceLineNo">880</span> * @param <T> 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 <code>OBJECT</code>, returns a cached {@link ClassMeta} object.<br><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 <E,T extends Collection<E>> ClassMeta<T> getCollectionClassMeta(Class<T> c, Class<E> 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> * <ul class='spaced-list'><a name="line.895"></a>
-<span class="sourceLineNo">896</span> * <li>{@link ClassMeta} object, which just returns the same object.<a name="line.896"></a>
-<span class="sourceLineNo">897</span> * <li>{@link Class} object (e.g. <code>String.<jk>class</jk></code>).<a name="line.897"></a>
-<span class="sourceLineNo">898</span> * <li>{@link Type} object (e.g. {@link ParameterizedType} or {@link GenericArrayType}.<a name="line.898"></a>
-<span class="sourceLineNo">899</span> * <li>Anything else is interpreted as {@code getClassMeta(o.getClass(), parameters);}<a name="line.899"></a>
-<span class="sourceLineNo">900</span> * </ul><a name="line.900"></a>
-<span class="sourceLineNo">901</span> * @return A ClassMeta object, or <jk>null</jk> 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 <jk>null</jk>.<a name="line.912"></a>
-<span class="sourceLineNo">913</span> */<a name="line.913"></a>
-<span class="sourceLineNo">914</span> public final ClassMeta<?>[] getClassMetas(Class<?>[] 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<?>[] cm = new ClassMeta<?>[classes.length];<a name="line.916"></a>
-<span class="sourceLineNo">917</span> for (int i = 0; i < 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 <T> 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 <jk>null</jk> if {@code o} is <jk>null</jk>.<a name="line.927"></a>
-<span class="sourceLineNo">928</span> */<a name="line.928"></a>
-<span class="sourceLineNo">929</span> public final <T> ClassMeta<T> 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<T>)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 <jk>null</jk>.<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 <jk>null</jk>.<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> * <p><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 <T> 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 <jk>null</jk> if {@code o} is <jk>null</jk>.<a name="line.863"></a>
+<span class="sourceLineNo">864</span> */<a name="line.864"></a>
+<span class="sourceLineNo">865</span> public final <T> ClassMeta<T> 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<T>)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 <jk>null</jk>.<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 <jk>null</jk>.<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> * <p><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 <jk>null</jk>.<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 <code>Object</code>.<a name="line.915"></a>
+<span class="sourceLineNo">916</span> * <p><a name="line.916"></a>
+<span class="sourceLineNo">917</span> * This <code>ClassMeta</code> 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> * <p><a name="line.919"></a>
+<span class="sourceLineNo">920</span> * This method is identical to calling <code>getClassMeta(Object.<jk>class</jk>)</code> 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 <code>Object</code> class.<a name="line.923"></a>
+<span class="sourceLineNo">924</span> */<a name="line.924"></a>
+<span class="sourceLineNo">925</span> public final ClassMeta<Object> 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 <code>String</code>.<a name="line.930"></a>
+<span class="sourceLineNo">931</span> * <p><a name="line.931"></a>
+<span class="sourceLineNo">932</span> * This <code>ClassMeta</code> is often used to represent key types in maps.<a name="line.932"></a>
+<span class="sourceLineNo">933</span> * <p><a name="line.933"></a>
+<span class="sourceLineNo">934</span> * This method is identical to calling <code>getClassMeta(String.<jk>class</jk>)</code> 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 <code>String</code> class.<a name="line.937"></a>
+<span class="sourceLineNo">938</span> */<a name="line.938"></a>
+<span class="sourceLineNo">939</span> public final ClassMeta<String> 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 <code>Class</code>.<a name="line.944"></a>
+<span class="sourceLineNo">945</span> * <p><a name="line.945"></a>
+<span class="sourceLineNo">946</span> * This <code>ClassMeta</code> is often used to represent key types in maps.<a name="line.946"></a>
+<span class="sourceLineNo">947</span> * <p><a name="line.947"></a>
+<span class="sourceLineNo">948</span> * This method is identical to calling <code>getClassMeta(Class.<jk>class</jk>)</code> 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 <code>String</code> class.<a name="line.951"></a>
+<span class="sourceLineNo">952</span> */<a name="line.952"></a>
+<span class="sourceLineNo">953</span> public final ClassMeta<Class> _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 <jk>null</jk>.<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 <code>Object</code>.<a name="line.979"></a>
-<span class="sourceLineNo">980</span> * <p><a name="line.980"></a>
-<span class="sourceLineNo">981</span> * This <code>ClassMeta</code> 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> * <p><a name="line.983"></a>
-<span class="sourceLineNo">984</span> * This method is identical to calling <code>getClassMeta(Object.<jk>class</jk>)</code> 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 <code>Object</code> class.<a name="line.987"></a>
-<span class="sourceLineNo">988</span> */<a name="line.988"></a>
-<span class="sourceLineNo">989</span> public final ClassMeta<Object> 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 <code>String</code>.<a name="line.994"></a>
-<span class="sourceLineNo">995</span> * <p><a name="line.995"></a>
-<span class="sourceLineNo">996</span> * This <code>ClassMeta</code> is often used to represent key types in maps.<a name="line.996"></a>
-<span class="sourceLineNo">997</span> * <p><a name="line.997"></a>
-<span class="sourceLineNo">998</span> * This method is identical to calling <code>getClassMeta(String.<jk>class</jk>)</code> 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 <code>String</code> class.<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span> */<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span> public final ClassMeta<String> 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 <code>Class</code>.<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span> * <p><a name="line.1009"></a>
-<span class="sourceLineNo">1010</span> * This <code>ClassMeta</code> is often used to represent key types in maps.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span> * <p><a name="line.1011"></a>
-<span class="sourceLineNo">1012</span> * This method is identical to calling <code>getClassMeta(Class.<jk>class</jk>)</code> 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 <code>String</code> class.<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span> */<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span> public final ClassMeta<Class> _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> * <p><a name="line.1032"></a>
-<span class="sourceLineNo">1033</span> * For example, <js>"application/json"</js>.<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 <jk>null</jk> 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 && 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> * <p><a name="line.968"></a>
+<span class="sourceLineNo">969</span> * For example, <js>"application/json"</js>.<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 <jk>null</jk> 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 && 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 <jk>null</jk> 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 <T> Constructor<? extends T> findNoArgConstructor(Class<T> c, Visibility v) {<a name="line.742"></a>
+<span class="sourceLineNo">742</span> protected static <T> Constructor<? extends T> findNoArgConstructor(Class<?> 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> * <h6 class='topic'>Description</h6><a name="line.18"></a>
+<span class="sourceLineNo">018</span> * <h5 class='section'>Description:</h5><a name="line.18"></a>
<span class="sourceLineNo">019</span> * <p><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>