This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new 0ff01d82de Deploy documentation staging from 
c4319e8592ea09dc817bf6e4515b4a05544614b5 
c4319e8592ea09dc817bf6e4515b4a05544614b5
0ff01d82de is described below

commit 0ff01d82de5c90cf79af02779cf9309282255159
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Dec 12 17:49:18 2025 +0000

    Deploy documentation staging from c4319e8592ea09dc817bf6e4515b4a05544614b5 
c4319e8592ea09dc817bf6e4515b4a05544614b5
---
 site/xref/org/apache/juneau/BeanContext.html       | 466 +++++++++++----------
 site/xref/org/apache/juneau/BeanPropertyMeta.html  |   6 +-
 .../apache/juneau/commons/reflect/ClassInfo.html   |   2 +-
 .../apache/juneau/commons/reflect/FieldInfo.html   |   2 +-
 4 files changed, 241 insertions(+), 235 deletions(-)

diff --git a/site/xref/org/apache/juneau/BeanContext.html 
b/site/xref/org/apache/juneau/BeanContext.html
index dc8e4d1cb1..d81d2c6bb3 100644
--- a/site/xref/org/apache/juneau/BeanContext.html
+++ b/site/xref/org/apache/juneau/BeanContext.html
@@ -4216,244 +4216,250 @@
 <a class="jxr_linenumber" name="L4208" href="#L4208">4208</a> <em 
class="jxr_javadoccomment">   * Used for determining the class type on a method 
or field where a {@code @Beanp} annotation may be present.</em>
 <a class="jxr_linenumber" name="L4209" href="#L4209">4209</a> <em 
class="jxr_javadoccomment">   *</em>
 <a class="jxr_linenumber" name="L4210" href="#L4210">4210</a> <em 
class="jxr_javadoccomment">   * @param &lt;T&gt; The class type we're 
wrapping.</em>
-<a class="jxr_linenumber" name="L4211" href="#L4211">4211</a> <em 
class="jxr_javadoccomment">   * @param p The property annotation on the type if 
there is one.</em>
-<a class="jxr_linenumber" name="L4212" href="#L4212">4212</a> <em 
class="jxr_javadoccomment">   * @param t The type.</em>
+<a class="jxr_linenumber" name="L4211" href="#L4211">4211</a> <em 
class="jxr_javadoccomment">   * @param p The property annotation info on the 
type if there is one.</em>
+<a class="jxr_linenumber" name="L4212" href="#L4212">4212</a> <em 
class="jxr_javadoccomment">   * @param ci The class info for the type.</em>
 <a class="jxr_linenumber" name="L4213" href="#L4213">4213</a> <em 
class="jxr_javadoccomment">   * @param typeVarImpls</em>
 <a class="jxr_linenumber" name="L4214" href="#L4214">4214</a> <em 
class="jxr_javadoccomment">   *      Contains known resolved type parameters on 
the specified class so that we can result</em>
 <a class="jxr_linenumber" name="L4215" href="#L4215">4215</a> <em 
class="jxr_javadoccomment">   *      {@code ParameterizedTypes} and {@code 
TypeVariables}.</em>
 <a class="jxr_linenumber" name="L4216" href="#L4216">4216</a> <em 
class="jxr_javadoccomment">   *      Can be &lt;jk&gt;null&lt;/jk&gt; if the 
information is not known.</em>
-<a class="jxr_linenumber" name="L4217" href="#L4217">4217</a> <em 
class="jxr_javadoccomment">   * @return The new {@code ClassMeta} object 
wrapped around the {@code Type} object.</em>
+<a class="jxr_linenumber" name="L4217" href="#L4217">4217</a> <em 
class="jxr_javadoccomment">   * @return The new {@code ClassMeta} object 
wrapped around the type.</em>
 <a class="jxr_linenumber" name="L4218" href="#L4218">4218</a> <em 
class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="L4219" href="#L4219">4219</a>  <strong 
class="jxr_keyword">protected</strong> <strong 
class="jxr_keyword">final</strong> &lt;T&gt; ClassMeta&lt;T&gt; 
resolveClassMeta(Beanp p, Type t, Map&lt;Class&lt;?&gt;,Class&lt;?&gt;[]&gt; 
typeVarImpls) {
-<a class="jxr_linenumber" name="L4220" href="#L4220">4220</a>          
ClassMeta&lt;T&gt; cm = resolveClassMeta(t, typeVarImpls);
+<a class="jxr_linenumber" name="L4219" href="#L4219">4219</a>  <strong 
class="jxr_keyword">protected</strong> <strong 
class="jxr_keyword">final</strong> &lt;T&gt; ClassMeta&lt;T&gt; 
resolveClassMeta(AnnotationInfo&lt;Beanp&gt; p, ClassInfo ci, 
Map&lt;Class&lt;?&gt;,Class&lt;?&gt;[]&gt; typeVarImpls) {
+<a class="jxr_linenumber" name="L4220" href="#L4220">4220</a>          
ClassMeta&lt;T&gt; cm = resolveClassMeta(ci, typeVarImpls);
 <a class="jxr_linenumber" name="L4221" href="#L4221">4221</a>          
ClassMeta&lt;T&gt; cm2 = cm;
 <a class="jxr_linenumber" name="L4222" href="#L4222">4222</a> 
 <a class="jxr_linenumber" name="L4223" href="#L4223">4223</a>          <strong 
class="jxr_keyword">if</strong> (nn(p)) {
-<a class="jxr_linenumber" name="L4224" href="#L4224">4224</a> 
-<a class="jxr_linenumber" name="L4225" href="#L4225">4225</a>                  
<strong class="jxr_keyword">if</strong> (isNotVoid(p.type()))
-<a class="jxr_linenumber" name="L4226" href="#L4226">4226</a>                  
        cm2 = resolveClassMeta(p.type(), typeVarImpls);
-<a class="jxr_linenumber" name="L4227" href="#L4227">4227</a> 
-<a class="jxr_linenumber" name="L4228" href="#L4228">4228</a>                  
<strong class="jxr_keyword">if</strong> (cm2.isMap()) {
-<a class="jxr_linenumber" name="L4229" href="#L4229">4229</a>                  
        Class&lt;?&gt;[] pParams = (p.params().length == 0 ? a(Object.<strong 
class="jxr_keyword">class</strong>, Object.<strong 
class="jxr_keyword">class</strong>) : p.params());
-<a class="jxr_linenumber" name="L4230" href="#L4230">4230</a>                  
        <strong class="jxr_keyword">if</strong> (pParams.length != 2)
-<a class="jxr_linenumber" name="L4231" href="#L4231">4231</a>                  
                <strong class="jxr_keyword">throw</strong> rex(<span 
class="jxr_string">"Invalid number of parameters specified for Map (must be 2): 
{0}"</span>, pParams.length);
-<a class="jxr_linenumber" name="L4232" href="#L4232">4232</a>                  
        ClassMeta&lt;?&gt; keyType = resolveType(pParams[0], cm2.getKeyType(), 
cm.getKeyType());
-<a class="jxr_linenumber" name="L4233" href="#L4233">4233</a>                  
        ClassMeta&lt;?&gt; valueType = resolveType(pParams[1], 
cm2.getValueType(), cm.getValueType());
-<a class="jxr_linenumber" name="L4234" href="#L4234">4234</a>                  
        <strong class="jxr_keyword">if</strong> (keyType.isObject() &amp;&amp; 
valueType.isObject())
-<a class="jxr_linenumber" name="L4235" href="#L4235">4235</a>                  
                <strong class="jxr_keyword">return</strong> cm2;
-<a class="jxr_linenumber" name="L4236" href="#L4236">4236</a>                  
        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">new</strong> ClassMeta&lt;&gt;(cm2, keyType, valueType, 
<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L4237" href="#L4237">4237</a>                  
}
-<a class="jxr_linenumber" name="L4238" href="#L4238">4238</a> 
-<a class="jxr_linenumber" name="L4239" href="#L4239">4239</a>                  
<strong class="jxr_keyword">if</strong> (cm2.isCollection() || 
cm2.isOptional()) {
-<a class="jxr_linenumber" name="L4240" href="#L4240">4240</a>                  
        Class&lt;?&gt;[] pParams = (p.params().length == 0 ? a(Object.<strong 
class="jxr_keyword">class</strong>) : p.params());
-<a class="jxr_linenumber" name="L4241" href="#L4241">4241</a>                  
        <strong class="jxr_keyword">if</strong> (pParams.length != 1)
-<a class="jxr_linenumber" name="L4242" href="#L4242">4242</a>                  
                <strong class="jxr_keyword">throw</strong> rex(<span 
class="jxr_string">"Invalid number of parameters specified for {1} (must be 1): 
{0}"</span>, pParams.length, (cm2.isCollection() ? <span 
class="jxr_string">"Collection"</span> : cm2.isOptional() ? <span 
class="jxr_string">"Optional"</span> : <span 
class="jxr_string">"Array"</span>));
-<a class="jxr_linenumber" name="L4243" href="#L4243">4243</a>                  
        ClassMeta&lt;?&gt; elementType = resolveType(pParams[0], 
cm2.getElementType(), cm.getElementType());
-<a class="jxr_linenumber" name="L4244" href="#L4244">4244</a>                  
        <strong class="jxr_keyword">if</strong> (elementType.isObject())
-<a class="jxr_linenumber" name="L4245" href="#L4245">4245</a>                  
                <strong class="jxr_keyword">return</strong> cm2;
-<a class="jxr_linenumber" name="L4246" href="#L4246">4246</a>                  
        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">new</strong> ClassMeta&lt;&gt;(cm2, <strong 
class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, 
elementType);
-<a class="jxr_linenumber" name="L4247" href="#L4247">4247</a>                  
}
-<a class="jxr_linenumber" name="L4248" href="#L4248">4248</a> 
-<a class="jxr_linenumber" name="L4249" href="#L4249">4249</a>                  
<strong class="jxr_keyword">return</strong> cm2;
-<a class="jxr_linenumber" name="L4250" href="#L4250">4250</a>          }
-<a class="jxr_linenumber" name="L4251" href="#L4251">4251</a> 
-<a class="jxr_linenumber" name="L4252" href="#L4252">4252</a>          <strong 
class="jxr_keyword">return</strong> cm;
-<a class="jxr_linenumber" name="L4253" href="#L4253">4253</a>  }
-<a class="jxr_linenumber" name="L4254" href="#L4254">4254</a> 
-<a class="jxr_linenumber" name="L4255" href="#L4255">4255</a>  <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L4256" href="#L4256">4256</a> <em 
class="jxr_javadoccomment">   * Returns a reusable {@link ClassMeta} 
representation for the class &lt;c&gt;String&lt;/c&gt;.</em>
-<a class="jxr_linenumber" name="L4257" href="#L4257">4257</a> <em 
class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="L4258" href="#L4258">4258</a> <em 
class="jxr_javadoccomment">   * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L4259" href="#L4259">4259</a> <em 
class="jxr_javadoccomment">   * This &lt;c&gt;ClassMeta&lt;/c&gt; is often used 
to represent key types in maps.</em>
-<a class="jxr_linenumber" name="L4260" href="#L4260">4260</a> <em 
class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="L4261" href="#L4261">4261</a> <em 
class="jxr_javadoccomment">   * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L4262" href="#L4262">4262</a> <em 
class="jxr_javadoccomment">   * This method is identical to calling 
&lt;code&gt;getClassMeta(String.&lt;jk&gt;class&lt;/jk&gt;)&lt;/code&gt; but 
uses a cached copy to</em>
-<a class="jxr_linenumber" name="L4263" href="#L4263">4263</a> <em 
class="jxr_javadoccomment">   * avoid a hashmap lookup.</em>
-<a class="jxr_linenumber" name="L4264" href="#L4264">4264</a> <em 
class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="L4265" href="#L4265">4265</a> <em 
class="jxr_javadoccomment">   * @return The {@link ClassMeta} object associated 
with the &lt;c&gt;String&lt;/c&gt; class.</em>
-<a class="jxr_linenumber" name="L4266" href="#L4266">4266</a> <em 
class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="L4267" href="#L4267">4267</a>  <strong 
class="jxr_keyword">protected</strong> <strong 
class="jxr_keyword">final</strong> ClassMeta&lt;String&gt; string() {
-<a class="jxr_linenumber" name="L4268" href="#L4268">4268</a>          <strong 
class="jxr_keyword">return</strong> cmString;
-<a class="jxr_linenumber" name="L4269" href="#L4269">4269</a>  }
-<a class="jxr_linenumber" name="L4270" href="#L4270">4270</a> 
-<a class="jxr_linenumber" name="L4271" href="#L4271">4271</a>  <strong 
class="jxr_keyword">final</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a>[] 
findParameters(Type o, Class c) {
-<a class="jxr_linenumber" name="L4272" href="#L4272">4272</a>          <strong 
class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L4273" href="#L4273">4273</a>                  
o = c;
-<a class="jxr_linenumber" name="L4274" href="#L4274">4274</a> 
-<a class="jxr_linenumber" name="L4275" href="#L4275">4275</a>          <em 
class="jxr_comment">// Loop until we find a ParameterizedType</em>
-<a class="jxr_linenumber" name="L4276" href="#L4276">4276</a>          <strong 
class="jxr_keyword">if</strong> (! (o instanceof ParameterizedType)) {
-<a class="jxr_linenumber" name="L4277" href="#L4277">4277</a>                  
loop: <strong class="jxr_keyword">do</strong> {
-<a class="jxr_linenumber" name="L4278" href="#L4278">4278</a>                  
        o = c.getGenericSuperclass();
-<a class="jxr_linenumber" name="L4279" href="#L4279">4279</a>                  
        <strong class="jxr_keyword">if</strong> (o instanceof ParameterizedType)
-<a class="jxr_linenumber" name="L4280" href="#L4280">4280</a>                  
                <strong class="jxr_keyword">break</strong> loop;
-<a class="jxr_linenumber" name="L4281" href="#L4281">4281</a>                  
        <strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> t : c.getGenericInterfaces()) {
-<a class="jxr_linenumber" name="L4282" href="#L4282">4282</a>                  
                o = t;
-<a class="jxr_linenumber" name="L4283" href="#L4283">4283</a>                  
                <strong class="jxr_keyword">if</strong> (o instanceof 
ParameterizedType)
-<a class="jxr_linenumber" name="L4284" href="#L4284">4284</a>                  
                        <strong class="jxr_keyword">break</strong> loop;
-<a class="jxr_linenumber" name="L4285" href="#L4285">4285</a>                  
        }
-<a class="jxr_linenumber" name="L4286" href="#L4286">4286</a>                  
        c = c.getSuperclass();
-<a class="jxr_linenumber" name="L4287" href="#L4287">4287</a>                  
} <strong class="jxr_keyword">while</strong> (nn(c));
-<a class="jxr_linenumber" name="L4288" href="#L4288">4288</a>          }
-<a class="jxr_linenumber" name="L4289" href="#L4289">4289</a> 
-<a class="jxr_linenumber" name="L4290" href="#L4290">4290</a>          <strong 
class="jxr_keyword">if</strong> (o instanceof ParameterizedType o2) {
-<a class="jxr_linenumber" name="L4291" href="#L4291">4291</a>                  
<strong class="jxr_keyword">if</strong> (! o2.getRawType().equals(Enum.<strong 
class="jxr_keyword">class</strong>)) {
-<a class="jxr_linenumber" name="L4292" href="#L4292">4292</a>                  
        List&lt;ClassMeta&lt;?&gt;&gt; l = <strong 
class="jxr_keyword">new</strong> LinkedList&lt;&gt;();
-<a class="jxr_linenumber" name="L4293" href="#L4293">4293</a>                  
        <strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> pt2 : o2.getActualTypeArguments()) {
-<a class="jxr_linenumber" name="L4294" href="#L4294">4294</a>                  
                <strong class="jxr_keyword">if</strong> (pt2 instanceof 
WildcardType || pt2 instanceof TypeVariable)
-<a class="jxr_linenumber" name="L4295" href="#L4295">4295</a>                  
                        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L4296" href="#L4296">4296</a>                  
                l.add(resolveClassMeta(pt2, <strong 
class="jxr_keyword">null</strong>));
-<a class="jxr_linenumber" name="L4297" href="#L4297">4297</a>                  
        }
-<a class="jxr_linenumber" name="L4298" href="#L4298">4298</a>                  
        <strong class="jxr_keyword">if</strong> (l.isEmpty())
-<a class="jxr_linenumber" name="L4299" href="#L4299">4299</a>                  
                <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L4300" href="#L4300">4300</a>                  
        <strong class="jxr_keyword">return</strong> l.toArray(<strong 
class="jxr_keyword">new</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a>[l.size()]);
-<a class="jxr_linenumber" name="L4301" href="#L4301">4301</a>                  
}
-<a class="jxr_linenumber" name="L4302" href="#L4302">4302</a>          }
-<a class="jxr_linenumber" name="L4303" href="#L4303">4303</a> 
-<a class="jxr_linenumber" name="L4304" href="#L4304">4304</a>          <strong 
class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L4305" href="#L4305">4305</a>  }
-<a class="jxr_linenumber" name="L4306" href="#L4306">4306</a> 
-<a class="jxr_linenumber" name="L4307" href="#L4307">4307</a>  <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L4308" href="#L4308">4308</a> <em 
class="jxr_javadoccomment">   * Construct a {@code ClassMeta} wrapper around a 
{@link Class} object.</em>
-<a class="jxr_linenumber" name="L4309" href="#L4309">4309</a> <em 
class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="L4310" href="#L4310">4310</a> <em 
class="jxr_javadoccomment">   * @param &lt;T&gt; The class type being 
wrapped.</em>
-<a class="jxr_linenumber" name="L4311" href="#L4311">4311</a> <em 
class="jxr_javadoccomment">   * @param type The class to resolve.</em>
-<a class="jxr_linenumber" name="L4312" href="#L4312">4312</a> <em 
class="jxr_javadoccomment">   * @param waitForInit</em>
-<a class="jxr_linenumber" name="L4313" href="#L4313">4313</a> <em 
class="jxr_javadoccomment">   *      When enabled, wait for the ClassMeta 
constructor to finish before returning.</em>
-<a class="jxr_linenumber" name="L4314" href="#L4314">4314</a> <em 
class="jxr_javadoccomment">   * @return</em>
-<a class="jxr_linenumber" name="L4315" href="#L4315">4315</a> <em 
class="jxr_javadoccomment">   *      If the class is not an array, returns a 
cached {@link ClassMeta} object.</em>
-<a class="jxr_linenumber" name="L4316" href="#L4316">4316</a> <em 
class="jxr_javadoccomment">   *      Otherwise, returns a new {@link ClassMeta} 
object every time.</em>
-<a class="jxr_linenumber" name="L4317" href="#L4317">4317</a> <em 
class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="L4318" href="#L4318">4318</a>  <strong 
class="jxr_keyword">final</strong> &lt;T&gt; ClassMeta&lt;T&gt; 
getClassMeta(Class&lt;T&gt; type, <strong class="jxr_keyword">boolean</strong> 
waitForInit) {
-<a class="jxr_linenumber" name="L4319" href="#L4319">4319</a> 
-<a class="jxr_linenumber" name="L4320" href="#L4320">4320</a>          <em 
class="jxr_comment">// This can happen if we have transforms defined against 
String or Object.</em>
-<a class="jxr_linenumber" name="L4321" href="#L4321">4321</a>          <strong 
class="jxr_keyword">if</strong> (cmCache == <strong 
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L4322" href="#L4322">4322</a>                  
<strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L4323" href="#L4323">4323</a> 
-<a class="jxr_linenumber" name="L4324" href="#L4324">4324</a>          <strong 
class="jxr_keyword">var</strong> cm = cmCache.get(type);
-<a class="jxr_linenumber" name="L4325" href="#L4325">4325</a>          <strong 
class="jxr_keyword">if</strong> (cm == <strong 
class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L4326" href="#L4326">4326</a> 
-<a class="jxr_linenumber" name="L4327" href="#L4327">4327</a>                  
<strong class="jxr_keyword">synchronized</strong> (<strong 
class="jxr_keyword">this</strong>) {
-<a class="jxr_linenumber" name="L4328" href="#L4328">4328</a>                  
        <em class="jxr_comment">// Make sure someone didn't already set it 
while this thread was blocked.</em>
-<a class="jxr_linenumber" name="L4329" href="#L4329">4329</a>                  
        cm = cmCache.get(type);
-<a class="jxr_linenumber" name="L4330" href="#L4330">4330</a>                  
        <strong class="jxr_keyword">if</strong> (cm == <strong 
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L4331" href="#L4331">4331</a>                  
                cm = <strong class="jxr_keyword">new</strong> 
ClassMeta&lt;&gt;(type, <strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="L4332" href="#L4332">4332</a>                  
}
-<a class="jxr_linenumber" name="L4333" href="#L4333">4333</a>          }
-<a class="jxr_linenumber" name="L4334" href="#L4334">4334</a> <em 
class="jxr_comment">//               if (waitForInit)</em>
-<a class="jxr_linenumber" name="L4335" href="#L4335">4335</a> <em 
class="jxr_comment">//                       cm.waitForInit();</em>
-<a class="jxr_linenumber" name="L4336" href="#L4336">4336</a>          <strong 
class="jxr_keyword">return</strong> cm;
-<a class="jxr_linenumber" name="L4337" href="#L4337">4337</a>  }
-<a class="jxr_linenumber" name="L4338" href="#L4338">4338</a> 
-<a class="jxr_linenumber" name="L4339" href="#L4339">4339</a>  <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L4340" href="#L4340">4340</a> <em 
class="jxr_javadoccomment">   * Convert a Type to a Class if possible.</em>
-<a class="jxr_linenumber" name="L4341" href="#L4341">4341</a> <em 
class="jxr_javadoccomment">   * Return null if not possible.</em>
-<a class="jxr_linenumber" name="L4342" href="#L4342">4342</a> <em 
class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="L4343" href="#L4343">4343</a>  <strong 
class="jxr_keyword">final</strong> Class resolve(Type t, 
Map&lt;Class&lt;?&gt;,Class&lt;?&gt;[]&gt; typeVarImpls) {
-<a class="jxr_linenumber" name="L4344" href="#L4344">4344</a> 
-<a class="jxr_linenumber" name="L4345" href="#L4345">4345</a>          <strong 
class="jxr_keyword">if</strong> (t instanceof Class t2)
-<a class="jxr_linenumber" name="L4346" href="#L4346">4346</a>                  
<strong class="jxr_keyword">return</strong> t2;
-<a class="jxr_linenumber" name="L4347" href="#L4347">4347</a> 
-<a class="jxr_linenumber" name="L4348" href="#L4348">4348</a>          <strong 
class="jxr_keyword">if</strong> (t instanceof ParameterizedType t3)
-<a class="jxr_linenumber" name="L4349" href="#L4349">4349</a>                  
<em class="jxr_comment">// A parameter (e.g. &lt;String&gt;.</em>
-<a class="jxr_linenumber" name="L4350" href="#L4350">4350</a>                  
<strong class="jxr_keyword">return</strong> (Class)t3.getRawType();
-<a class="jxr_linenumber" name="L4351" href="#L4351">4351</a> 
-<a class="jxr_linenumber" name="L4352" href="#L4352">4352</a>          <strong 
class="jxr_keyword">if</strong> (t instanceof GenericArrayType t4) {
-<a class="jxr_linenumber" name="L4353" href="#L4353">4353</a>                  
<em class="jxr_comment">// An array parameter (e.g. &lt;byte[]&gt;).</em>
-<a class="jxr_linenumber" name="L4354" href="#L4354">4354</a>                  
<strong class="jxr_keyword">var</strong> gatct = t4.getGenericComponentType();
-<a class="jxr_linenumber" name="L4355" href="#L4355">4355</a> 
-<a class="jxr_linenumber" name="L4356" href="#L4356">4356</a>                  
<strong class="jxr_keyword">if</strong> (gatct instanceof Class&lt;?&gt; gatct2)
-<a class="jxr_linenumber" name="L4357" href="#L4357">4357</a>                  
        <strong class="jxr_keyword">return</strong> Array.newInstance(gatct2, 
0).getClass();
-<a class="jxr_linenumber" name="L4358" href="#L4358">4358</a> 
-<a class="jxr_linenumber" name="L4359" href="#L4359">4359</a>                  
<strong class="jxr_keyword">if</strong> (gatct instanceof ParameterizedType 
gatct3)
-<a class="jxr_linenumber" name="L4360" href="#L4360">4360</a>                  
        <strong class="jxr_keyword">return</strong> 
Array.newInstance((Class)gatct3.getRawType(), 0).getClass();
-<a class="jxr_linenumber" name="L4361" href="#L4361">4361</a> 
-<a class="jxr_linenumber" name="L4362" href="#L4362">4362</a>                  
<strong class="jxr_keyword">if</strong> (gatct instanceof GenericArrayType 
gatct4)
-<a class="jxr_linenumber" name="L4363" href="#L4363">4363</a>                  
        <strong class="jxr_keyword">return</strong> 
Array.newInstance(resolve(gatct4, typeVarImpls), 0).getClass();
-<a class="jxr_linenumber" name="L4364" href="#L4364">4364</a> 
-<a class="jxr_linenumber" name="L4365" href="#L4365">4365</a>                  
<strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L4366" href="#L4366">4366</a> 
-<a class="jxr_linenumber" name="L4367" href="#L4367">4367</a>          } 
<strong class="jxr_keyword">else</strong> <strong 
class="jxr_keyword">if</strong> (t instanceof TypeVariable t4) {
-<a class="jxr_linenumber" name="L4368" href="#L4368">4368</a>                  
<strong class="jxr_keyword">if</strong> (nn(typeVarImpls)) {
-<a class="jxr_linenumber" name="L4369" href="#L4369">4369</a>                  
        String varName = t4.getName();
-<a class="jxr_linenumber" name="L4370" href="#L4370">4370</a>                  
        <strong class="jxr_keyword">int</strong> varIndex = -1;
-<a class="jxr_linenumber" name="L4371" href="#L4371">4371</a>                  
        <strong class="jxr_keyword">var</strong> gc = 
(Class)t4.getGenericDeclaration();
-<a class="jxr_linenumber" name="L4372" href="#L4372">4372</a>                  
        TypeVariable[] tvv = gc.getTypeParameters();
-<a class="jxr_linenumber" name="L4373" href="#L4373">4373</a>                  
        <strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> i = 0; i &lt; tvv.length; i++) {
-<a class="jxr_linenumber" name="L4374" href="#L4374">4374</a>                  
                <strong class="jxr_keyword">if</strong> 
(tvv[i].getName().equals(varName)) {
-<a class="jxr_linenumber" name="L4375" href="#L4375">4375</a>                  
                        varIndex = i;
-<a class="jxr_linenumber" name="L4376" href="#L4376">4376</a>                  
                }
-<a class="jxr_linenumber" name="L4377" href="#L4377">4377</a>                  
        }
-<a class="jxr_linenumber" name="L4378" href="#L4378">4378</a>                  
        <strong class="jxr_keyword">if</strong> (varIndex != -1) {
-<a class="jxr_linenumber" name="L4379" href="#L4379">4379</a> 
-<a class="jxr_linenumber" name="L4380" href="#L4380">4380</a>                  
                <em class="jxr_comment">// If we couldn't find a type variable 
implementation, that means</em>
-<a class="jxr_linenumber" name="L4381" href="#L4381">4381</a>                  
                <em class="jxr_comment">// the type was defined at runtime 
(e.g. Bean b = new Bean&lt;Foo&gt;();)</em>
-<a class="jxr_linenumber" name="L4382" href="#L4382">4382</a>                  
                <em class="jxr_comment">// in which case the type is lost 
through erasure.</em>
-<a class="jxr_linenumber" name="L4383" href="#L4383">4383</a>                  
                <em class="jxr_comment">// Assume java.lang.Object as the 
type.</em>
-<a class="jxr_linenumber" name="L4384" href="#L4384">4384</a>                  
                <strong class="jxr_keyword">if</strong> (! 
typeVarImpls.containsKey(gc))
-<a class="jxr_linenumber" name="L4385" href="#L4385">4385</a>                  
                        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L4386" href="#L4386">4386</a> 
-<a class="jxr_linenumber" name="L4387" href="#L4387">4387</a>                  
                <strong class="jxr_keyword">return</strong> 
typeVarImpls.get(gc)[varIndex];
-<a class="jxr_linenumber" name="L4388" href="#L4388">4388</a>                  
        }
-<a class="jxr_linenumber" name="L4389" href="#L4389">4389</a>                  
}
-<a class="jxr_linenumber" name="L4390" href="#L4390">4390</a>          }
-<a class="jxr_linenumber" name="L4391" href="#L4391">4391</a>          <strong 
class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L4392" href="#L4392">4392</a>  }
-<a class="jxr_linenumber" name="L4393" href="#L4393">4393</a> 
-<a class="jxr_linenumber" name="L4394" href="#L4394">4394</a>  <strong 
class="jxr_keyword">final</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a> 
resolveClassMeta(Type o, Map&lt;Class&lt;?&gt;,Class&lt;?&gt;[]&gt; 
typeVarImpls) {
-<a class="jxr_linenumber" name="L4395" href="#L4395">4395</a>          <strong 
class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L4396" href="#L4396">4396</a>                  
<strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L4397" href="#L4397">4397</a> 
-<a class="jxr_linenumber" name="L4398" href="#L4398">4398</a>          <strong 
class="jxr_keyword">if</strong> (o instanceof ClassMeta&lt;?&gt; cm) {
-<a class="jxr_linenumber" name="L4399" href="#L4399">4399</a> 
-<a class="jxr_linenumber" name="L4400" href="#L4400">4400</a>                  
<em class="jxr_comment">// This classmeta could have been created by a 
different context.</em>
-<a class="jxr_linenumber" name="L4401" href="#L4401">4401</a>                  
<em class="jxr_comment">// Need to re-resolve it to pick up ObjectSwaps and 
stuff on this context.</em>
-<a class="jxr_linenumber" name="L4402" href="#L4402">4402</a>                  
<strong class="jxr_keyword">if</strong> (cm.getBeanContext() == <strong 
class="jxr_keyword">this</strong>)
-<a class="jxr_linenumber" name="L4403" href="#L4403">4403</a>                  
        <strong class="jxr_keyword">return</strong> cm;
-<a class="jxr_linenumber" name="L4404" href="#L4404">4404</a>                  
<strong class="jxr_keyword">if</strong> (cm.isMap())
-<a class="jxr_linenumber" name="L4405" href="#L4405">4405</a>                  
        <strong class="jxr_keyword">return</strong> getClassMeta(cm.<strong 
class="jxr_keyword">inner</strong>(), cm.getKeyType(), cm.getValueType());
-<a class="jxr_linenumber" name="L4406" href="#L4406">4406</a>                  
<strong class="jxr_keyword">if</strong> (cm.isCollection() || cm.isOptional())
-<a class="jxr_linenumber" name="L4407" href="#L4407">4407</a>                  
        <strong class="jxr_keyword">return</strong> getClassMeta(cm.<strong 
class="jxr_keyword">inner</strong>(), cm.getElementType());
-<a class="jxr_linenumber" name="L4408" href="#L4408">4408</a>                  
<strong class="jxr_keyword">return</strong> getClassMeta(cm.<strong 
class="jxr_keyword">inner</strong>());
-<a class="jxr_linenumber" name="L4409" href="#L4409">4409</a>          }
-<a class="jxr_linenumber" name="L4410" href="#L4410">4410</a> 
-<a class="jxr_linenumber" name="L4411" href="#L4411">4411</a>          Class c 
= resolve(o, typeVarImpls);
-<a class="jxr_linenumber" name="L4412" href="#L4412">4412</a> 
-<a class="jxr_linenumber" name="L4413" href="#L4413">4413</a>          <em 
class="jxr_comment">// This can happen when trying to resolve the "E 
getFirst()" method on LinkedList, whose type is a TypeVariable</em>
-<a class="jxr_linenumber" name="L4414" href="#L4414">4414</a>          <em 
class="jxr_comment">// These should just resolve to Object.</em>
-<a class="jxr_linenumber" name="L4415" href="#L4415">4415</a>          <strong 
class="jxr_keyword">if</strong> (c == <strong class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L4416" href="#L4416">4416</a>                  
<strong class="jxr_keyword">return</strong> object();
-<a class="jxr_linenumber" name="L4417" href="#L4417">4417</a> 
-<a class="jxr_linenumber" name="L4418" href="#L4418">4418</a>          
ClassMeta rawType = getClassMeta(c);
-<a class="jxr_linenumber" name="L4419" href="#L4419">4419</a> 
-<a class="jxr_linenumber" name="L4420" href="#L4420">4420</a>          <em 
class="jxr_comment">// If this is a Map or Collection, and the parameter types 
aren't part</em>
-<a class="jxr_linenumber" name="L4421" href="#L4421">4421</a>          <em 
class="jxr_comment">// of the class definition itself (e.g. class AddressBook 
extends List&lt;Person&gt;),</em>
-<a class="jxr_linenumber" name="L4422" href="#L4422">4422</a>          <em 
class="jxr_comment">// then we need to figure out the parameters.</em>
-<a class="jxr_linenumber" name="L4423" href="#L4423">4423</a>          <strong 
class="jxr_keyword">if</strong> (rawType.isMap() || rawType.isCollection() || 
rawType.isOptional()) {
-<a class="jxr_linenumber" name="L4424" href="#L4424">4424</a>                  
ClassMeta[] params = findParameters(o, c);
-<a class="jxr_linenumber" name="L4425" href="#L4425">4425</a>                  
<strong class="jxr_keyword">if</strong> (params == <strong 
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L4426" href="#L4426">4426</a>                  
        <strong class="jxr_keyword">return</strong> rawType;
-<a class="jxr_linenumber" name="L4427" href="#L4427">4427</a>                  
<strong class="jxr_keyword">if</strong> (rawType.isMap()) {
-<a class="jxr_linenumber" name="L4428" href="#L4428">4428</a>                  
        <strong class="jxr_keyword">if</strong> (params.length != 2 || 
(params[0].isObject() &amp;&amp; params[1].isObject()))
-<a class="jxr_linenumber" name="L4429" href="#L4429">4429</a>                  
                <strong class="jxr_keyword">return</strong> rawType;
-<a class="jxr_linenumber" name="L4430" href="#L4430">4430</a>                  
        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">new</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a>(rawType,
 params[0], params[1], <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L4431" href="#L4431">4431</a>                  
}
-<a class="jxr_linenumber" name="L4432" href="#L4432">4432</a>                  
<strong class="jxr_keyword">if</strong> (rawType.isCollection() || 
rawType.isOptional()) {
-<a class="jxr_linenumber" name="L4433" href="#L4433">4433</a>                  
        <strong class="jxr_keyword">if</strong> (params.length != 1 || 
params[0].isObject())
-<a class="jxr_linenumber" name="L4434" href="#L4434">4434</a>                  
                <strong class="jxr_keyword">return</strong> rawType;
-<a class="jxr_linenumber" name="L4435" href="#L4435">4435</a>                  
        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">new</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a>(rawType,
 <strong class="jxr_keyword">null</strong>, <strong 
class="jxr_keyword">null</strong>, params[0]);
-<a class="jxr_linenumber" name="L4436" href="#L4436">4436</a>                  
}
-<a class="jxr_linenumber" name="L4437" href="#L4437">4437</a>          }
-<a class="jxr_linenumber" name="L4438" href="#L4438">4438</a> 
-<a class="jxr_linenumber" name="L4439" href="#L4439">4439</a>          <strong 
class="jxr_keyword">if</strong> (rawType.isArray()) {
-<a class="jxr_linenumber" name="L4440" href="#L4440">4440</a>                  
<strong class="jxr_keyword">if</strong> (o instanceof GenericArrayType o2) {
-<a class="jxr_linenumber" name="L4441" href="#L4441">4441</a>                  
        ClassMeta elementType = resolveClassMeta(o2.getGenericComponentType(), 
typeVarImpls);
-<a class="jxr_linenumber" name="L4442" href="#L4442">4442</a>                  
        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">new</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a>(rawType,
 <strong class="jxr_keyword">null</strong>, <strong 
class="jxr_keyword">null</strong>, elementType);
-<a class="jxr_linenumber" name="L4443" href="#L4443">4443</a>                  
}
-<a class="jxr_linenumber" name="L4444" href="#L4444">4444</a>          }
-<a class="jxr_linenumber" name="L4445" href="#L4445">4445</a> 
-<a class="jxr_linenumber" name="L4446" href="#L4446">4446</a>          <strong 
class="jxr_keyword">return</strong> rawType;
-<a class="jxr_linenumber" name="L4447" href="#L4447">4447</a>  }
-<a class="jxr_linenumber" name="L4448" href="#L4448">4448</a> }
+<a class="jxr_linenumber" name="L4224" href="#L4224">4224</a>                  
<strong class="jxr_keyword">var</strong> beanp = p.<strong 
class="jxr_keyword">inner</strong>();
+<a class="jxr_linenumber" name="L4225" href="#L4225">4225</a> 
+<a class="jxr_linenumber" name="L4226" href="#L4226">4226</a>                  
<strong class="jxr_keyword">if</strong> (isNotVoid(beanp.type()))
+<a class="jxr_linenumber" name="L4227" href="#L4227">4227</a>                  
        cm2 = resolveClassMeta(beanp.type(), typeVarImpls);
+<a class="jxr_linenumber" name="L4228" href="#L4228">4228</a> 
+<a class="jxr_linenumber" name="L4229" href="#L4229">4229</a>                  
<strong class="jxr_keyword">if</strong> (cm2.isMap()) {
+<a class="jxr_linenumber" name="L4230" href="#L4230">4230</a>                  
        Class&lt;?&gt;[] pParams = (beanp.params().length == 0 ? 
a(Object.<strong class="jxr_keyword">class</strong>, Object.<strong 
class="jxr_keyword">class</strong>) : beanp.params());
+<a class="jxr_linenumber" name="L4231" href="#L4231">4231</a>                  
        <strong class="jxr_keyword">if</strong> (pParams.length != 2)
+<a class="jxr_linenumber" name="L4232" href="#L4232">4232</a>                  
                <strong class="jxr_keyword">throw</strong> rex(<span 
class="jxr_string">"Invalid number of parameters specified for Map (must be 2): 
{0}"</span>, pParams.length);
+<a class="jxr_linenumber" name="L4233" href="#L4233">4233</a>                  
        ClassMeta&lt;?&gt; keyType = resolveType(pParams[0], cm2.getKeyType(), 
cm.getKeyType());
+<a class="jxr_linenumber" name="L4234" href="#L4234">4234</a>                  
        ClassMeta&lt;?&gt; valueType = resolveType(pParams[1], 
cm2.getValueType(), cm.getValueType());
+<a class="jxr_linenumber" name="L4235" href="#L4235">4235</a>                  
        <strong class="jxr_keyword">if</strong> (keyType.isObject() &amp;&amp; 
valueType.isObject())
+<a class="jxr_linenumber" name="L4236" href="#L4236">4236</a>                  
                <strong class="jxr_keyword">return</strong> cm2;
+<a class="jxr_linenumber" name="L4237" href="#L4237">4237</a>                  
        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">new</strong> ClassMeta&lt;&gt;(cm2, keyType, valueType, 
<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L4238" href="#L4238">4238</a>                  
}
+<a class="jxr_linenumber" name="L4239" href="#L4239">4239</a> 
+<a class="jxr_linenumber" name="L4240" href="#L4240">4240</a>                  
<strong class="jxr_keyword">if</strong> (cm2.isCollection() || 
cm2.isOptional()) {
+<a class="jxr_linenumber" name="L4241" href="#L4241">4241</a>                  
        Class&lt;?&gt;[] pParams = (beanp.params().length == 0 ? 
a(Object.<strong class="jxr_keyword">class</strong>) : beanp.params());
+<a class="jxr_linenumber" name="L4242" href="#L4242">4242</a>                  
        <strong class="jxr_keyword">if</strong> (pParams.length != 1)
+<a class="jxr_linenumber" name="L4243" href="#L4243">4243</a>                  
                <strong class="jxr_keyword">throw</strong> rex(<span 
class="jxr_string">"Invalid number of parameters specified for {1} (must be 1): 
{0}"</span>, pParams.length, (cm2.isCollection() ? <span 
class="jxr_string">"Collection"</span> : cm2.isOptional() ? <span 
class="jxr_string">"Optional"</span> : <span 
class="jxr_string">"Array"</span>));
+<a class="jxr_linenumber" name="L4244" href="#L4244">4244</a>                  
        ClassMeta&lt;?&gt; elementType = resolveType(pParams[0], 
cm2.getElementType(), cm.getElementType());
+<a class="jxr_linenumber" name="L4245" href="#L4245">4245</a>                  
        <strong class="jxr_keyword">if</strong> (elementType.isObject())
+<a class="jxr_linenumber" name="L4246" href="#L4246">4246</a>                  
                <strong class="jxr_keyword">return</strong> cm2;
+<a class="jxr_linenumber" name="L4247" href="#L4247">4247</a>                  
        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">new</strong> ClassMeta&lt;&gt;(cm2, <strong 
class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, 
elementType);
+<a class="jxr_linenumber" name="L4248" href="#L4248">4248</a>                  
}
+<a class="jxr_linenumber" name="L4249" href="#L4249">4249</a> 
+<a class="jxr_linenumber" name="L4250" href="#L4250">4250</a>                  
<strong class="jxr_keyword">return</strong> cm2;
+<a class="jxr_linenumber" name="L4251" href="#L4251">4251</a>          }
+<a class="jxr_linenumber" name="L4252" href="#L4252">4252</a> 
+<a class="jxr_linenumber" name="L4253" href="#L4253">4253</a>          <strong 
class="jxr_keyword">return</strong> cm;
+<a class="jxr_linenumber" name="L4254" href="#L4254">4254</a>  }
+<a class="jxr_linenumber" name="L4255" href="#L4255">4255</a> 
+<a class="jxr_linenumber" name="L4256" href="#L4256">4256</a>  <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L4257" href="#L4257">4257</a> <em 
class="jxr_javadoccomment">   * Returns a reusable {@link ClassMeta} 
representation for the class &lt;c&gt;String&lt;/c&gt;.</em>
+<a class="jxr_linenumber" name="L4258" href="#L4258">4258</a> <em 
class="jxr_javadoccomment">   *</em>
+<a class="jxr_linenumber" name="L4259" href="#L4259">4259</a> <em 
class="jxr_javadoccomment">   * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L4260" href="#L4260">4260</a> <em 
class="jxr_javadoccomment">   * This &lt;c&gt;ClassMeta&lt;/c&gt; is often used 
to represent key types in maps.</em>
+<a class="jxr_linenumber" name="L4261" href="#L4261">4261</a> <em 
class="jxr_javadoccomment">   *</em>
+<a class="jxr_linenumber" name="L4262" href="#L4262">4262</a> <em 
class="jxr_javadoccomment">   * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L4263" href="#L4263">4263</a> <em 
class="jxr_javadoccomment">   * This method is identical to calling 
&lt;code&gt;getClassMeta(String.&lt;jk&gt;class&lt;/jk&gt;)&lt;/code&gt; but 
uses a cached copy to</em>
+<a class="jxr_linenumber" name="L4264" href="#L4264">4264</a> <em 
class="jxr_javadoccomment">   * avoid a hashmap lookup.</em>
+<a class="jxr_linenumber" name="L4265" href="#L4265">4265</a> <em 
class="jxr_javadoccomment">   *</em>
+<a class="jxr_linenumber" name="L4266" href="#L4266">4266</a> <em 
class="jxr_javadoccomment">   * @return The {@link ClassMeta} object associated 
with the &lt;c&gt;String&lt;/c&gt; class.</em>
+<a class="jxr_linenumber" name="L4267" href="#L4267">4267</a> <em 
class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="L4268" href="#L4268">4268</a>  <strong 
class="jxr_keyword">protected</strong> <strong 
class="jxr_keyword">final</strong> ClassMeta&lt;String&gt; string() {
+<a class="jxr_linenumber" name="L4269" href="#L4269">4269</a>          <strong 
class="jxr_keyword">return</strong> cmString;
+<a class="jxr_linenumber" name="L4270" href="#L4270">4270</a>  }
+<a class="jxr_linenumber" name="L4271" href="#L4271">4271</a> 
+<a class="jxr_linenumber" name="L4272" href="#L4272">4272</a>  <strong 
class="jxr_keyword">final</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a>[] 
findParameters(Type o, Class c) {
+<a class="jxr_linenumber" name="L4273" href="#L4273">4273</a>          <strong 
class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L4274" href="#L4274">4274</a>                  
o = c;
+<a class="jxr_linenumber" name="L4275" href="#L4275">4275</a> 
+<a class="jxr_linenumber" name="L4276" href="#L4276">4276</a>          <em 
class="jxr_comment">// Loop until we find a ParameterizedType</em>
+<a class="jxr_linenumber" name="L4277" href="#L4277">4277</a>          <strong 
class="jxr_keyword">if</strong> (! (o instanceof ParameterizedType)) {
+<a class="jxr_linenumber" name="L4278" href="#L4278">4278</a>                  
loop: <strong class="jxr_keyword">do</strong> {
+<a class="jxr_linenumber" name="L4279" href="#L4279">4279</a>                  
        o = c.getGenericSuperclass();
+<a class="jxr_linenumber" name="L4280" href="#L4280">4280</a>                  
        <strong class="jxr_keyword">if</strong> (o instanceof ParameterizedType)
+<a class="jxr_linenumber" name="L4281" href="#L4281">4281</a>                  
                <strong class="jxr_keyword">break</strong> loop;
+<a class="jxr_linenumber" name="L4282" href="#L4282">4282</a>                  
        <strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> t : c.getGenericInterfaces()) {
+<a class="jxr_linenumber" name="L4283" href="#L4283">4283</a>                  
                o = t;
+<a class="jxr_linenumber" name="L4284" href="#L4284">4284</a>                  
                <strong class="jxr_keyword">if</strong> (o instanceof 
ParameterizedType)
+<a class="jxr_linenumber" name="L4285" href="#L4285">4285</a>                  
                        <strong class="jxr_keyword">break</strong> loop;
+<a class="jxr_linenumber" name="L4286" href="#L4286">4286</a>                  
        }
+<a class="jxr_linenumber" name="L4287" href="#L4287">4287</a>                  
        c = c.getSuperclass();
+<a class="jxr_linenumber" name="L4288" href="#L4288">4288</a>                  
} <strong class="jxr_keyword">while</strong> (nn(c));
+<a class="jxr_linenumber" name="L4289" href="#L4289">4289</a>          }
+<a class="jxr_linenumber" name="L4290" href="#L4290">4290</a> 
+<a class="jxr_linenumber" name="L4291" href="#L4291">4291</a>          <strong 
class="jxr_keyword">if</strong> (o instanceof ParameterizedType o2) {
+<a class="jxr_linenumber" name="L4292" href="#L4292">4292</a>                  
<strong class="jxr_keyword">if</strong> (! o2.getRawType().equals(Enum.<strong 
class="jxr_keyword">class</strong>)) {
+<a class="jxr_linenumber" name="L4293" href="#L4293">4293</a>                  
        List&lt;ClassMeta&lt;?&gt;&gt; l = <strong 
class="jxr_keyword">new</strong> LinkedList&lt;&gt;();
+<a class="jxr_linenumber" name="L4294" href="#L4294">4294</a>                  
        <strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> pt2 : o2.getActualTypeArguments()) {
+<a class="jxr_linenumber" name="L4295" href="#L4295">4295</a>                  
                <strong class="jxr_keyword">if</strong> (pt2 instanceof 
WildcardType || pt2 instanceof TypeVariable)
+<a class="jxr_linenumber" name="L4296" href="#L4296">4296</a>                  
                        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L4297" href="#L4297">4297</a>                  
                l.add(resolveClassMeta(pt2, <strong 
class="jxr_keyword">null</strong>));
+<a class="jxr_linenumber" name="L4298" href="#L4298">4298</a>                  
        }
+<a class="jxr_linenumber" name="L4299" href="#L4299">4299</a>                  
        <strong class="jxr_keyword">if</strong> (l.isEmpty())
+<a class="jxr_linenumber" name="L4300" href="#L4300">4300</a>                  
                <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L4301" href="#L4301">4301</a>                  
        <strong class="jxr_keyword">return</strong> l.toArray(<strong 
class="jxr_keyword">new</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a>[l.size()]);
+<a class="jxr_linenumber" name="L4302" href="#L4302">4302</a>                  
}
+<a class="jxr_linenumber" name="L4303" href="#L4303">4303</a>          }
+<a class="jxr_linenumber" name="L4304" href="#L4304">4304</a> 
+<a class="jxr_linenumber" name="L4305" href="#L4305">4305</a>          <strong 
class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L4306" href="#L4306">4306</a>  }
+<a class="jxr_linenumber" name="L4307" href="#L4307">4307</a> 
+<a class="jxr_linenumber" name="L4308" href="#L4308">4308</a>  <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L4309" href="#L4309">4309</a> <em 
class="jxr_javadoccomment">   * Construct a {@code ClassMeta} wrapper around a 
{@link Class} object.</em>
+<a class="jxr_linenumber" name="L4310" href="#L4310">4310</a> <em 
class="jxr_javadoccomment">   *</em>
+<a class="jxr_linenumber" name="L4311" href="#L4311">4311</a> <em 
class="jxr_javadoccomment">   * @param &lt;T&gt; The class type being 
wrapped.</em>
+<a class="jxr_linenumber" name="L4312" href="#L4312">4312</a> <em 
class="jxr_javadoccomment">   * @param type The class to resolve.</em>
+<a class="jxr_linenumber" name="L4313" href="#L4313">4313</a> <em 
class="jxr_javadoccomment">   * @param waitForInit</em>
+<a class="jxr_linenumber" name="L4314" href="#L4314">4314</a> <em 
class="jxr_javadoccomment">   *      When enabled, wait for the ClassMeta 
constructor to finish before returning.</em>
+<a class="jxr_linenumber" name="L4315" href="#L4315">4315</a> <em 
class="jxr_javadoccomment">   * @return</em>
+<a class="jxr_linenumber" name="L4316" href="#L4316">4316</a> <em 
class="jxr_javadoccomment">   *      If the class is not an array, returns a 
cached {@link ClassMeta} object.</em>
+<a class="jxr_linenumber" name="L4317" href="#L4317">4317</a> <em 
class="jxr_javadoccomment">   *      Otherwise, returns a new {@link ClassMeta} 
object every time.</em>
+<a class="jxr_linenumber" name="L4318" href="#L4318">4318</a> <em 
class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="L4319" href="#L4319">4319</a>  <strong 
class="jxr_keyword">final</strong> &lt;T&gt; ClassMeta&lt;T&gt; 
getClassMeta(Class&lt;T&gt; type, <strong class="jxr_keyword">boolean</strong> 
waitForInit) {
+<a class="jxr_linenumber" name="L4320" href="#L4320">4320</a> 
+<a class="jxr_linenumber" name="L4321" href="#L4321">4321</a>          <em 
class="jxr_comment">// This can happen if we have transforms defined against 
String or Object.</em>
+<a class="jxr_linenumber" name="L4322" href="#L4322">4322</a>          <strong 
class="jxr_keyword">if</strong> (cmCache == <strong 
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L4323" href="#L4323">4323</a>                  
<strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L4324" href="#L4324">4324</a> 
+<a class="jxr_linenumber" name="L4325" href="#L4325">4325</a>          <strong 
class="jxr_keyword">var</strong> cm = cmCache.get(type);
+<a class="jxr_linenumber" name="L4326" href="#L4326">4326</a>          <strong 
class="jxr_keyword">if</strong> (cm == <strong 
class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L4327" href="#L4327">4327</a> 
+<a class="jxr_linenumber" name="L4328" href="#L4328">4328</a>                  
<strong class="jxr_keyword">synchronized</strong> (<strong 
class="jxr_keyword">this</strong>) {
+<a class="jxr_linenumber" name="L4329" href="#L4329">4329</a>                  
        <em class="jxr_comment">// Make sure someone didn't already set it 
while this thread was blocked.</em>
+<a class="jxr_linenumber" name="L4330" href="#L4330">4330</a>                  
        cm = cmCache.get(type);
+<a class="jxr_linenumber" name="L4331" href="#L4331">4331</a>                  
        <strong class="jxr_keyword">if</strong> (cm == <strong 
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L4332" href="#L4332">4332</a>                  
                cm = <strong class="jxr_keyword">new</strong> 
ClassMeta&lt;&gt;(type, <strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="L4333" href="#L4333">4333</a>                  
}
+<a class="jxr_linenumber" name="L4334" href="#L4334">4334</a>          }
+<a class="jxr_linenumber" name="L4335" href="#L4335">4335</a> <em 
class="jxr_comment">//               if (waitForInit)</em>
+<a class="jxr_linenumber" name="L4336" href="#L4336">4336</a> <em 
class="jxr_comment">//                       cm.waitForInit();</em>
+<a class="jxr_linenumber" name="L4337" href="#L4337">4337</a>          <strong 
class="jxr_keyword">return</strong> cm;
+<a class="jxr_linenumber" name="L4338" href="#L4338">4338</a>  }
+<a class="jxr_linenumber" name="L4339" href="#L4339">4339</a> 
+<a class="jxr_linenumber" name="L4340" href="#L4340">4340</a>  <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L4341" href="#L4341">4341</a> <em 
class="jxr_javadoccomment">   * Convert a Type to a Class if possible.</em>
+<a class="jxr_linenumber" name="L4342" href="#L4342">4342</a> <em 
class="jxr_javadoccomment">   * Return null if not possible.</em>
+<a class="jxr_linenumber" name="L4343" href="#L4343">4343</a> <em 
class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="L4344" href="#L4344">4344</a>  <strong 
class="jxr_keyword">final</strong> Class resolve(Type t, 
Map&lt;Class&lt;?&gt;,Class&lt;?&gt;[]&gt; typeVarImpls) {
+<a class="jxr_linenumber" name="L4345" href="#L4345">4345</a> 
+<a class="jxr_linenumber" name="L4346" href="#L4346">4346</a>          <strong 
class="jxr_keyword">if</strong> (t instanceof Class t2)
+<a class="jxr_linenumber" name="L4347" href="#L4347">4347</a>                  
<strong class="jxr_keyword">return</strong> t2;
+<a class="jxr_linenumber" name="L4348" href="#L4348">4348</a> 
+<a class="jxr_linenumber" name="L4349" href="#L4349">4349</a>          <strong 
class="jxr_keyword">if</strong> (t instanceof ParameterizedType t3)
+<a class="jxr_linenumber" name="L4350" href="#L4350">4350</a>                  
<em class="jxr_comment">// A parameter (e.g. &lt;String&gt;.</em>
+<a class="jxr_linenumber" name="L4351" href="#L4351">4351</a>                  
<strong class="jxr_keyword">return</strong> (Class)t3.getRawType();
+<a class="jxr_linenumber" name="L4352" href="#L4352">4352</a> 
+<a class="jxr_linenumber" name="L4353" href="#L4353">4353</a>          <strong 
class="jxr_keyword">if</strong> (t instanceof GenericArrayType t4) {
+<a class="jxr_linenumber" name="L4354" href="#L4354">4354</a>                  
<em class="jxr_comment">// An array parameter (e.g. &lt;byte[]&gt;).</em>
+<a class="jxr_linenumber" name="L4355" href="#L4355">4355</a>                  
<strong class="jxr_keyword">var</strong> gatct = t4.getGenericComponentType();
+<a class="jxr_linenumber" name="L4356" href="#L4356">4356</a> 
+<a class="jxr_linenumber" name="L4357" href="#L4357">4357</a>                  
<strong class="jxr_keyword">if</strong> (gatct instanceof Class&lt;?&gt; gatct2)
+<a class="jxr_linenumber" name="L4358" href="#L4358">4358</a>                  
        <strong class="jxr_keyword">return</strong> Array.newInstance(gatct2, 
0).getClass();
+<a class="jxr_linenumber" name="L4359" href="#L4359">4359</a> 
+<a class="jxr_linenumber" name="L4360" href="#L4360">4360</a>                  
<strong class="jxr_keyword">if</strong> (gatct instanceof ParameterizedType 
gatct3)
+<a class="jxr_linenumber" name="L4361" href="#L4361">4361</a>                  
        <strong class="jxr_keyword">return</strong> 
Array.newInstance((Class)gatct3.getRawType(), 0).getClass();
+<a class="jxr_linenumber" name="L4362" href="#L4362">4362</a> 
+<a class="jxr_linenumber" name="L4363" href="#L4363">4363</a>                  
<strong class="jxr_keyword">if</strong> (gatct instanceof GenericArrayType 
gatct4)
+<a class="jxr_linenumber" name="L4364" href="#L4364">4364</a>                  
        <strong class="jxr_keyword">return</strong> 
Array.newInstance(resolve(gatct4, typeVarImpls), 0).getClass();
+<a class="jxr_linenumber" name="L4365" href="#L4365">4365</a> 
+<a class="jxr_linenumber" name="L4366" href="#L4366">4366</a>                  
<strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L4367" href="#L4367">4367</a> 
+<a class="jxr_linenumber" name="L4368" href="#L4368">4368</a>          } 
<strong class="jxr_keyword">else</strong> <strong 
class="jxr_keyword">if</strong> (t instanceof TypeVariable t4) {
+<a class="jxr_linenumber" name="L4369" href="#L4369">4369</a>                  
<strong class="jxr_keyword">if</strong> (nn(typeVarImpls)) {
+<a class="jxr_linenumber" name="L4370" href="#L4370">4370</a>                  
        String varName = t4.getName();
+<a class="jxr_linenumber" name="L4371" href="#L4371">4371</a>                  
        <strong class="jxr_keyword">int</strong> varIndex = -1;
+<a class="jxr_linenumber" name="L4372" href="#L4372">4372</a>                  
        <strong class="jxr_keyword">var</strong> gc = 
(Class)t4.getGenericDeclaration();
+<a class="jxr_linenumber" name="L4373" href="#L4373">4373</a>                  
        TypeVariable[] tvv = gc.getTypeParameters();
+<a class="jxr_linenumber" name="L4374" href="#L4374">4374</a>                  
        <strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> i = 0; i &lt; tvv.length; i++) {
+<a class="jxr_linenumber" name="L4375" href="#L4375">4375</a>                  
                <strong class="jxr_keyword">if</strong> 
(tvv[i].getName().equals(varName)) {
+<a class="jxr_linenumber" name="L4376" href="#L4376">4376</a>                  
                        varIndex = i;
+<a class="jxr_linenumber" name="L4377" href="#L4377">4377</a>                  
                }
+<a class="jxr_linenumber" name="L4378" href="#L4378">4378</a>                  
        }
+<a class="jxr_linenumber" name="L4379" href="#L4379">4379</a>                  
        <strong class="jxr_keyword">if</strong> (varIndex != -1) {
+<a class="jxr_linenumber" name="L4380" href="#L4380">4380</a> 
+<a class="jxr_linenumber" name="L4381" href="#L4381">4381</a>                  
                <em class="jxr_comment">// If we couldn't find a type variable 
implementation, that means</em>
+<a class="jxr_linenumber" name="L4382" href="#L4382">4382</a>                  
                <em class="jxr_comment">// the type was defined at runtime 
(e.g. Bean b = new Bean&lt;Foo&gt;();)</em>
+<a class="jxr_linenumber" name="L4383" href="#L4383">4383</a>                  
                <em class="jxr_comment">// in which case the type is lost 
through erasure.</em>
+<a class="jxr_linenumber" name="L4384" href="#L4384">4384</a>                  
                <em class="jxr_comment">// Assume java.lang.Object as the 
type.</em>
+<a class="jxr_linenumber" name="L4385" href="#L4385">4385</a>                  
                <strong class="jxr_keyword">if</strong> (! 
typeVarImpls.containsKey(gc))
+<a class="jxr_linenumber" name="L4386" href="#L4386">4386</a>                  
                        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L4387" href="#L4387">4387</a> 
+<a class="jxr_linenumber" name="L4388" href="#L4388">4388</a>                  
                <strong class="jxr_keyword">return</strong> 
typeVarImpls.get(gc)[varIndex];
+<a class="jxr_linenumber" name="L4389" href="#L4389">4389</a>                  
        }
+<a class="jxr_linenumber" name="L4390" href="#L4390">4390</a>                  
}
+<a class="jxr_linenumber" name="L4391" href="#L4391">4391</a>          }
+<a class="jxr_linenumber" name="L4392" href="#L4392">4392</a>          <strong 
class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L4393" href="#L4393">4393</a>  }
+<a class="jxr_linenumber" name="L4394" href="#L4394">4394</a> 
+<a class="jxr_linenumber" name="L4395" href="#L4395">4395</a>  <strong 
class="jxr_keyword">final</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a> 
resolveClassMeta(Type o, Map&lt;Class&lt;?&gt;,Class&lt;?&gt;[]&gt; 
typeVarImpls) {
+<a class="jxr_linenumber" name="L4396" href="#L4396">4396</a>          <strong 
class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L4397" href="#L4397">4397</a>                  
<strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L4398" href="#L4398">4398</a> 
+<a class="jxr_linenumber" name="L4399" href="#L4399">4399</a>          <strong 
class="jxr_keyword">if</strong> (o instanceof ClassMeta&lt;?&gt; cm) {
+<a class="jxr_linenumber" name="L4400" href="#L4400">4400</a> 
+<a class="jxr_linenumber" name="L4401" href="#L4401">4401</a>                  
<em class="jxr_comment">// This classmeta could have been created by a 
different context.</em>
+<a class="jxr_linenumber" name="L4402" href="#L4402">4402</a>                  
<em class="jxr_comment">// Need to re-resolve it to pick up ObjectSwaps and 
stuff on this context.</em>
+<a class="jxr_linenumber" name="L4403" href="#L4403">4403</a>                  
<strong class="jxr_keyword">if</strong> (cm.getBeanContext() == <strong 
class="jxr_keyword">this</strong>)
+<a class="jxr_linenumber" name="L4404" href="#L4404">4404</a>                  
        <strong class="jxr_keyword">return</strong> cm;
+<a class="jxr_linenumber" name="L4405" href="#L4405">4405</a>                  
<strong class="jxr_keyword">if</strong> (cm.isMap())
+<a class="jxr_linenumber" name="L4406" href="#L4406">4406</a>                  
        <strong class="jxr_keyword">return</strong> getClassMeta(cm.<strong 
class="jxr_keyword">inner</strong>(), cm.getKeyType(), cm.getValueType());
+<a class="jxr_linenumber" name="L4407" href="#L4407">4407</a>                  
<strong class="jxr_keyword">if</strong> (cm.isCollection() || cm.isOptional())
+<a class="jxr_linenumber" name="L4408" href="#L4408">4408</a>                  
        <strong class="jxr_keyword">return</strong> getClassMeta(cm.<strong 
class="jxr_keyword">inner</strong>(), cm.getElementType());
+<a class="jxr_linenumber" name="L4409" href="#L4409">4409</a>                  
<strong class="jxr_keyword">return</strong> getClassMeta(cm.<strong 
class="jxr_keyword">inner</strong>());
+<a class="jxr_linenumber" name="L4410" href="#L4410">4410</a>          }
+<a class="jxr_linenumber" name="L4411" href="#L4411">4411</a> 
+<a class="jxr_linenumber" name="L4412" href="#L4412">4412</a>          <em 
class="jxr_comment">// Handle ClassInfo by extracting the underlying Type</em>
+<a class="jxr_linenumber" name="L4413" href="#L4413">4413</a>          <strong 
class="jxr_keyword">if</strong> (o instanceof ClassInfo ci) {
+<a class="jxr_linenumber" name="L4414" href="#L4414">4414</a>                  
<strong class="jxr_keyword">return</strong> resolveClassMeta(ci.innerType(), 
typeVarImpls);
+<a class="jxr_linenumber" name="L4415" href="#L4415">4415</a>          }
+<a class="jxr_linenumber" name="L4416" href="#L4416">4416</a> 
+<a class="jxr_linenumber" name="L4417" href="#L4417">4417</a>          Class c 
= resolve(o, typeVarImpls);
+<a class="jxr_linenumber" name="L4418" href="#L4418">4418</a> 
+<a class="jxr_linenumber" name="L4419" href="#L4419">4419</a>          <em 
class="jxr_comment">// This can happen when trying to resolve the "E 
getFirst()" method on LinkedList, whose type is a TypeVariable</em>
+<a class="jxr_linenumber" name="L4420" href="#L4420">4420</a>          <em 
class="jxr_comment">// These should just resolve to Object.</em>
+<a class="jxr_linenumber" name="L4421" href="#L4421">4421</a>          <strong 
class="jxr_keyword">if</strong> (c == <strong class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L4422" href="#L4422">4422</a>                  
<strong class="jxr_keyword">return</strong> object();
+<a class="jxr_linenumber" name="L4423" href="#L4423">4423</a> 
+<a class="jxr_linenumber" name="L4424" href="#L4424">4424</a>          
ClassMeta rawType = getClassMeta(c);
+<a class="jxr_linenumber" name="L4425" href="#L4425">4425</a> 
+<a class="jxr_linenumber" name="L4426" href="#L4426">4426</a>          <em 
class="jxr_comment">// If this is a Map or Collection, and the parameter types 
aren't part</em>
+<a class="jxr_linenumber" name="L4427" href="#L4427">4427</a>          <em 
class="jxr_comment">// of the class definition itself (e.g. class AddressBook 
extends List&lt;Person&gt;),</em>
+<a class="jxr_linenumber" name="L4428" href="#L4428">4428</a>          <em 
class="jxr_comment">// then we need to figure out the parameters.</em>
+<a class="jxr_linenumber" name="L4429" href="#L4429">4429</a>          <strong 
class="jxr_keyword">if</strong> (rawType.isMap() || rawType.isCollection() || 
rawType.isOptional()) {
+<a class="jxr_linenumber" name="L4430" href="#L4430">4430</a>                  
ClassMeta[] params = findParameters(o, c);
+<a class="jxr_linenumber" name="L4431" href="#L4431">4431</a>                  
<strong class="jxr_keyword">if</strong> (params == <strong 
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L4432" href="#L4432">4432</a>                  
        <strong class="jxr_keyword">return</strong> rawType;
+<a class="jxr_linenumber" name="L4433" href="#L4433">4433</a>                  
<strong class="jxr_keyword">if</strong> (rawType.isMap()) {
+<a class="jxr_linenumber" name="L4434" href="#L4434">4434</a>                  
        <strong class="jxr_keyword">if</strong> (params.length != 2 || 
(params[0].isObject() &amp;&amp; params[1].isObject()))
+<a class="jxr_linenumber" name="L4435" href="#L4435">4435</a>                  
                <strong class="jxr_keyword">return</strong> rawType;
+<a class="jxr_linenumber" name="L4436" href="#L4436">4436</a>                  
        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">new</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a>(rawType,
 params[0], params[1], <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L4437" href="#L4437">4437</a>                  
}
+<a class="jxr_linenumber" name="L4438" href="#L4438">4438</a>                  
<strong class="jxr_keyword">if</strong> (rawType.isCollection() || 
rawType.isOptional()) {
+<a class="jxr_linenumber" name="L4439" href="#L4439">4439</a>                  
        <strong class="jxr_keyword">if</strong> (params.length != 1 || 
params[0].isObject())
+<a class="jxr_linenumber" name="L4440" href="#L4440">4440</a>                  
                <strong class="jxr_keyword">return</strong> rawType;
+<a class="jxr_linenumber" name="L4441" href="#L4441">4441</a>                  
        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">new</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a>(rawType,
 <strong class="jxr_keyword">null</strong>, <strong 
class="jxr_keyword">null</strong>, params[0]);
+<a class="jxr_linenumber" name="L4442" href="#L4442">4442</a>                  
}
+<a class="jxr_linenumber" name="L4443" href="#L4443">4443</a>          }
+<a class="jxr_linenumber" name="L4444" href="#L4444">4444</a> 
+<a class="jxr_linenumber" name="L4445" href="#L4445">4445</a>          <strong 
class="jxr_keyword">if</strong> (rawType.isArray()) {
+<a class="jxr_linenumber" name="L4446" href="#L4446">4446</a>                  
<strong class="jxr_keyword">if</strong> (o instanceof GenericArrayType o2) {
+<a class="jxr_linenumber" name="L4447" href="#L4447">4447</a>                  
        ClassMeta elementType = resolveClassMeta(o2.getGenericComponentType(), 
typeVarImpls);
+<a class="jxr_linenumber" name="L4448" href="#L4448">4448</a>                  
        <strong class="jxr_keyword">return</strong> <strong 
class="jxr_keyword">new</strong> <a name="ClassMeta" 
href="../../../org/apache/juneau/ClassMeta.html#ClassMeta">ClassMeta</a>(rawType,
 <strong class="jxr_keyword">null</strong>, <strong 
class="jxr_keyword">null</strong>, elementType);
+<a class="jxr_linenumber" name="L4449" href="#L4449">4449</a>                  
}
+<a class="jxr_linenumber" name="L4450" href="#L4450">4450</a>          }
+<a class="jxr_linenumber" name="L4451" href="#L4451">4451</a> 
+<a class="jxr_linenumber" name="L4452" href="#L4452">4452</a>          <strong 
class="jxr_keyword">return</strong> rawType;
+<a class="jxr_linenumber" name="L4453" href="#L4453">4453</a>  }
+<a class="jxr_linenumber" name="L4454" href="#L4454">4454</a> }
 </pre>
 <hr/>
 <div id="footer">© 2016–2025 <a href="https://www.apache.org/";>The Apache 
Software Foundation</a></div>
diff --git a/site/xref/org/apache/juneau/BeanPropertyMeta.html 
b/site/xref/org/apache/juneau/BeanPropertyMeta.html
index bd3acd75b3..b44141ef56 100644
--- a/site/xref/org/apache/juneau/BeanPropertyMeta.html
+++ b/site/xref/org/apache/juneau/BeanPropertyMeta.html
@@ -311,7 +311,7 @@
 <a class="jxr_linenumber" name="L303" href="#L303">303</a>                     
        <strong class="jxr_keyword">if</strong> (nn(field) || isNotEmpty(lp)) {
 <a class="jxr_linenumber" name="L304" href="#L304">304</a>                     
                <em class="jxr_comment">// Only use field type if it's a bean 
property or has @Beanp annotation.</em>
 <a class="jxr_linenumber" name="L305" href="#L305">305</a>                     
                <em class="jxr_comment">// Otherwise, we want to infer the type 
from the getter or setter.</em>
-<a class="jxr_linenumber" name="L306" href="#L306">306</a>                     
                rawTypeMeta = 
bc.resolveClassMeta(opt(last(lp)).map(AnnotationInfo::<strong 
class="jxr_keyword">inner</strong>).orElse(<strong 
class="jxr_keyword">null</strong>), innerField.<strong 
class="jxr_keyword">inner</strong>().getGenericType(), typeVarImpls);
+<a class="jxr_linenumber" name="L306" href="#L306">306</a>                     
                rawTypeMeta = bc.resolveClassMeta(opt(last(lp)).orElse(<strong 
class="jxr_keyword">null</strong>), innerField.getFieldType(), typeVarImpls);
 <a class="jxr_linenumber" name="L307" href="#L307">307</a>                     
                isUri |= (rawTypeMeta.isUri());
 <a class="jxr_linenumber" name="L308" href="#L308">308</a>                     
        }
 <a class="jxr_linenumber" name="L309" href="#L309">309</a>                     
        lp.forEach(x -&gt; {
@@ -333,7 +333,7 @@
 <a class="jxr_linenumber" name="L325" href="#L325">325</a>                     
<strong class="jxr_keyword">if</strong> (nn(getter)) {
 <a class="jxr_linenumber" name="L326" href="#L326">326</a>                     
        <strong class="jxr_keyword">var</strong> lp = ap.find(Beanp.<strong 
class="jxr_keyword">class</strong>, gi);
 <a class="jxr_linenumber" name="L327" href="#L327">327</a>                     
        <strong class="jxr_keyword">if</strong> (rawTypeMeta == <strong 
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L328" href="#L328">328</a>                     
                rawTypeMeta = 
bc.resolveClassMeta(opt(last(lp)).map(AnnotationInfo::<strong 
class="jxr_keyword">inner</strong>).orElse(<strong 
class="jxr_keyword">null</strong>), getter.<strong 
class="jxr_keyword">inner</strong>().getGenericReturnType(), typeVarImpls);
+<a class="jxr_linenumber" name="L328" href="#L328">328</a>                     
                rawTypeMeta = bc.resolveClassMeta(opt(last(lp)).orElse(<strong 
class="jxr_keyword">null</strong>), getter.getReturnType(), typeVarImpls);
 <a class="jxr_linenumber" name="L329" href="#L329">329</a>                     
        isUri |= (rawTypeMeta.isUri() || ap.has(Uri.<strong 
class="jxr_keyword">class</strong>, gi));
 <a class="jxr_linenumber" name="L330" href="#L330">330</a>                     
        lp.forEach(x -&gt; {
 <a class="jxr_linenumber" name="L331" href="#L331">331</a>                     
                <strong class="jxr_keyword">var</strong> beanp = x.<strong 
class="jxr_keyword">inner</strong>();
@@ -353,7 +353,7 @@
 <a class="jxr_linenumber" name="L345" href="#L345">345</a>                     
<strong class="jxr_keyword">if</strong> (nn(setter)) {
 <a class="jxr_linenumber" name="L346" href="#L346">346</a>                     
        <strong class="jxr_keyword">var</strong> lp = ap.find(Beanp.<strong 
class="jxr_keyword">class</strong>, si);
 <a class="jxr_linenumber" name="L347" href="#L347">347</a>                     
        <strong class="jxr_keyword">if</strong> (rawTypeMeta == <strong 
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L348" href="#L348">348</a>                     
                rawTypeMeta = 
bc.resolveClassMeta(opt(last(lp)).map(AnnotationInfo::<strong 
class="jxr_keyword">inner</strong>).orElse(<strong 
class="jxr_keyword">null</strong>), setter.<strong 
class="jxr_keyword">inner</strong>().getGenericParameterTypes()[0], 
typeVarImpls);
+<a class="jxr_linenumber" name="L348" href="#L348">348</a>                     
                rawTypeMeta = bc.resolveClassMeta(opt(last(lp)).orElse(<strong 
class="jxr_keyword">null</strong>), setter.getParameterTypes().get(0), 
typeVarImpls);
 <a class="jxr_linenumber" name="L349" href="#L349">349</a>                     
        isUri |= (rawTypeMeta.isUri() || ap.has(Uri.<strong 
class="jxr_keyword">class</strong>, si));
 <a class="jxr_linenumber" name="L350" href="#L350">350</a>                     
        lp.forEach(x -&gt; {
 <a class="jxr_linenumber" name="L351" href="#L351">351</a>                     
                <strong class="jxr_keyword">var</strong> beanp = x.<strong 
class="jxr_keyword">inner</strong>();
diff --git a/site/xref/org/apache/juneau/commons/reflect/ClassInfo.html 
b/site/xref/org/apache/juneau/commons/reflect/ClassInfo.html
index 233eac8fb3..7cd787837f 100644
--- a/site/xref/org/apache/juneau/commons/reflect/ClassInfo.html
+++ b/site/xref/org/apache/juneau/commons/reflect/ClassInfo.html
@@ -240,7 +240,7 @@
 <a class="jxr_linenumber" name="L232" href="#L232">232</a>             <strong 
class="jxr_keyword">this</strong>.fullName = memoize(() -&gt; 
getNameFormatted(FULL, <strong class="jxr_keyword">true</strong>, '$', 
BRACKETS));
 <a class="jxr_linenumber" name="L233" href="#L233">233</a>             <strong 
class="jxr_keyword">this</strong>.shortName = memoize(() -&gt; 
getNameFormatted(SHORT, <strong class="jxr_keyword">true</strong>, '$', 
BRACKETS));
 <a class="jxr_linenumber" name="L234" href="#L234">234</a>             <strong 
class="jxr_keyword">this</strong>.readableName = memoize(() -&gt; 
getNameFormatted(SIMPLE, false, '$', WORD));
-<a class="jxr_linenumber" name="L235" href="#L235">235</a>             <strong 
class="jxr_keyword">this</strong>.declaredInterfaces = memoize(() -&gt; 
opt(<strong class="jxr_keyword">inner</strong>).map(x -&gt; 
stream(x.getInterfaces()).map(ClassInfo::of).map(ClassInfo.<strong 
class="jxr_keyword">class</strong>::<strong 
class="jxr_keyword">cast</strong>).toList()).orElse(liste()));
+<a class="jxr_linenumber" name="L235" href="#L235">235</a>             <strong 
class="jxr_keyword">this</strong>.declaredInterfaces = memoize(() -&gt; 
opt(<strong class="jxr_keyword">inner</strong>).map(x -&gt; 
stream(x.getGenericInterfaces()).map(ClassInfo::of).map(ClassInfo.<strong 
class="jxr_keyword">class</strong>::<strong 
class="jxr_keyword">cast</strong>).toList()).orElse(liste()));
 <a class="jxr_linenumber" name="L236" href="#L236">236</a>             <strong 
class="jxr_keyword">this</strong>.interfaces = memoize(() -&gt; 
getParents().stream().flatMap(x -&gt; 
x.getDeclaredInterfaces().stream()).flatMap(ci2 -&gt; concat(Stream.of(ci2), 
ci2.getInterfaces().stream())).distinct().toList());
 <a class="jxr_linenumber" name="L237" href="#L237">237</a>             <strong 
class="jxr_keyword">this</strong>.allParents = memoize(() -&gt; 
concat(getParents().stream(), getInterfaces().stream()).toList());
 <a class="jxr_linenumber" name="L238" href="#L238">238</a>             <strong 
class="jxr_keyword">this</strong>.parentsAndInterfaces = memoize(<strong 
class="jxr_keyword">this</strong>::findParentsAndInterfaces);
diff --git a/site/xref/org/apache/juneau/commons/reflect/FieldInfo.html 
b/site/xref/org/apache/juneau/commons/reflect/FieldInfo.html
index 8dd3873128..c9ca94b51d 100644
--- a/site/xref/org/apache/juneau/commons/reflect/FieldInfo.html
+++ b/site/xref/org/apache/juneau/commons/reflect/FieldInfo.html
@@ -155,7 +155,7 @@
 <a class="jxr_linenumber" name="L147" href="#L147">147</a>             
assertArgNotNull(<span class="jxr_string">"inner"</span>, <strong 
class="jxr_keyword">inner</strong>);
 <a class="jxr_linenumber" name="L148" href="#L148">148</a>             <strong 
class="jxr_keyword">this</strong>.declaringClass = declaringClass;
 <a class="jxr_linenumber" name="L149" href="#L149">149</a>             <strong 
class="jxr_keyword">this</strong>.<strong class="jxr_keyword">inner</strong> = 
<strong class="jxr_keyword">inner</strong>;
-<a class="jxr_linenumber" name="L150" href="#L150">150</a>             <strong 
class="jxr_keyword">this</strong>.type = memoize(() -&gt; ClassInfo.of(<strong 
class="jxr_keyword">inner</strong>.getType()));
+<a class="jxr_linenumber" name="L150" href="#L150">150</a>             <strong 
class="jxr_keyword">this</strong>.type = memoize(() -&gt; ClassInfo.of(<strong 
class="jxr_keyword">inner</strong>.getType(), <strong 
class="jxr_keyword">inner</strong>.getGenericType()));
 <a class="jxr_linenumber" name="L151" href="#L151">151</a>             <strong 
class="jxr_keyword">this</strong>.annotations = memoize(() -&gt; stream(<strong 
class="jxr_keyword">inner</strong>.getAnnotations()).flatMap(a -&gt; 
AnnotationUtils.streamRepeated(a)).map(a -&gt; ai(<strong 
class="jxr_keyword">this</strong>, a)).toList());
 <a class="jxr_linenumber" name="L152" href="#L152">152</a>             <strong 
class="jxr_keyword">this</strong>.fullName = memoize(<strong 
class="jxr_keyword">this</strong>::findFullName);
 <a class="jxr_linenumber" name="L153" href="#L153">153</a>     }

Reply via email to