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 <T> 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 <jk>null</jk> 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> <T> ClassMeta<T>
resolveClassMeta(Beanp p, Type t, Map<Class<?>,Class<?>[]>
typeVarImpls) {
-<a class="jxr_linenumber" name="L4220" href="#L4220">4220</a>
ClassMeta<T> 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> <T> ClassMeta<T>
resolveClassMeta(AnnotationInfo<Beanp> p, ClassInfo ci,
Map<Class<?>,Class<?>[]> typeVarImpls) {
+<a class="jxr_linenumber" name="L4220" href="#L4220">4220</a>
ClassMeta<T> cm = resolveClassMeta(ci, typeVarImpls);
<a class="jxr_linenumber" name="L4221" href="#L4221">4221</a>
ClassMeta<T> 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<?>[] 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<?> keyType = resolveType(pParams[0], cm2.getKeyType(),
cm.getKeyType());
-<a class="jxr_linenumber" name="L4233" href="#L4233">4233</a>
ClassMeta<?> 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() &&
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<>(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<?>[] 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<?> 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<>(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 <c>String</c>.</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"> * <p></em>
-<a class="jxr_linenumber" name="L4259" href="#L4259">4259</a> <em
class="jxr_javadoccomment"> * This <c>ClassMeta</c> 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"> * <p></em>
-<a class="jxr_linenumber" name="L4262" href="#L4262">4262</a> <em
class="jxr_javadoccomment"> * This method is identical to calling
<code>getClassMeta(String.<jk>class</jk>)</code> 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 <c>String</c> 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<String> 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<ClassMeta<?>> l = <strong
class="jxr_keyword">new</strong> LinkedList<>();
-<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 <T> 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> <T> ClassMeta<T>
getClassMeta(Class<T> 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<>(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<Class<?>,Class<?>[]> 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. <String>.</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. <byte[]>).</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<?> 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 < 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<Foo>();)</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<Class<?>,Class<?>[]>
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<?> 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<Person>),</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() && 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<?>[] 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<?> keyType = resolveType(pParams[0], cm2.getKeyType(),
cm.getKeyType());
+<a class="jxr_linenumber" name="L4234" href="#L4234">4234</a>
ClassMeta<?> 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() &&
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<>(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<?>[] 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<?> 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<>(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 <c>String</c>.</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"> * <p></em>
+<a class="jxr_linenumber" name="L4260" href="#L4260">4260</a> <em
class="jxr_javadoccomment"> * This <c>ClassMeta</c> 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"> * <p></em>
+<a class="jxr_linenumber" name="L4263" href="#L4263">4263</a> <em
class="jxr_javadoccomment"> * This method is identical to calling
<code>getClassMeta(String.<jk>class</jk>)</code> 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 <c>String</c> 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<String> 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<ClassMeta<?>> l = <strong
class="jxr_keyword">new</strong> LinkedList<>();
+<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 <T> 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> <T> ClassMeta<T>
getClassMeta(Class<T> 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<>(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<Class<?>,Class<?>[]> 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. <String>.</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. <byte[]>).</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<?> 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 < 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<Foo>();)</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<Class<?>,Class<?>[]>
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<?> 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<Person>),</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() && 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 -> {
@@ -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 -> {
<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 -> {
<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(() ->
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(() ->
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(() ->
getNameFormatted(SIMPLE, false, '$', WORD));
-<a class="jxr_linenumber" name="L235" href="#L235">235</a> <strong
class="jxr_keyword">this</strong>.declaredInterfaces = memoize(() ->
opt(<strong class="jxr_keyword">inner</strong>).map(x ->
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(() ->
opt(<strong class="jxr_keyword">inner</strong>).map(x ->
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(() ->
getParents().stream().flatMap(x ->
x.getDeclaredInterfaces().stream()).flatMap(ci2 -> 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(() ->
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(() -> 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(() -> 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(() -> stream(<strong
class="jxr_keyword">inner</strong>.getAnnotations()).flatMap(a ->
AnnotationUtils.streamRepeated(a)).map(a -> 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> }