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 ebf5ba2c81 Deploy documentation staging from
429ce6ddf7f15ae0f6ebd4fd4f9a582aa07916b2
429ce6ddf7f15ae0f6ebd4fd4f9a582aa07916b2
ebf5ba2c81 is described below
commit ebf5ba2c81647ddf104250bbbeab9e7cafdaebda
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Dec 8 18:59:23 2025 +0000
Deploy documentation staging from 429ce6ddf7f15ae0f6ebd4fd4f9a582aa07916b2
429ce6ddf7f15ae0f6ebd4fd4f9a582aa07916b2
---
site/xref/org/apache/juneau/ClassMeta.html | 939 +++++++++++++++--------------
1 file changed, 470 insertions(+), 469 deletions(-)
diff --git a/site/xref/org/apache/juneau/ClassMeta.html
b/site/xref/org/apache/juneau/ClassMeta.html
index 102a75a553..45caa52391 100644
--- a/site/xref/org/apache/juneau/ClassMeta.html
+++ b/site/xref/org/apache/juneau/ClassMeta.html
@@ -162,7 +162,7 @@
<a class="jxr_linenumber" name="L154" href="#L154">154</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
Map<Class<?>,Mutater<?,T>> fromMutaters = <strong
class="jxr_keyword">new</strong> ConcurrentHashMap<>();
<a class="jxr_linenumber" name="L155" href="#L155">155</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
OptionalSupplier<MethodInfo> fromStringMethod; <em
class="jxr_comment">// Static fromString(String) or equivalent method</em>
<a class="jxr_linenumber" name="L156" href="#L156">156</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
OptionalSupplier<ClassInfoTyped<? <strong
class="jxr_keyword">extends</strong> T>> implClass; <em
class="jxr_comment">// The implementation class to use if this is an
interface.</em>
-<a class="jxr_linenumber" name="L157" href="#L157">157</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
Supplier<Tuple2<ClassMeta<?>,ClassMeta<?>>>
keyValueTypes; <em class="jxr_comment">// Key and value types for MAP
types.</em>
+<a class="jxr_linenumber" name="L157" href="#L157">157</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
Supplier<KeyValueTypes> keyValueTypes; <em
class="jxr_comment">// Key and value types for MAP types.</em>
<a class="jxr_linenumber" name="L158" href="#L158">158</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
<a name="SimpleReadWriteLock"
href="../../../org/apache/juneau/commons/utils/SimpleReadWriteLock.html#SimpleReadWriteLock">SimpleReadWriteLock</a>
lock = <strong class="jxr_keyword">new</strong> <a name="SimpleReadWriteLock"
href="../../../org/apache/juneau/commons/utils/SimpleReadWriteLock.html#SimpleReadWriteLock">SimpleReadWriteLock</a>(false);
<a class="jxr_linenumber" name="L159" href="#L159">159</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
OptionalSupplier<MarshalledFilter> marshalledFilter;
<a class="jxr_linenumber" name="L160" href="#L160">160</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
Supplier<Property<T,Object>> nameProperty; <em
class="jxr_comment">// The method to set the name on an object (if it has
one).</em>
@@ -173,16 +173,16 @@
<a class="jxr_linenumber" name="L165" href="#L165">165</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
OptionalSupplier<ConstructorInfo> stringConstructor; <em
class="jxr_comment">// The X(String) constructor (if it has one).</em>
<a class="jxr_linenumber" name="L166" href="#L166">166</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
Supplier<List<ObjectSwap<T,?>>> swaps;
<em class="jxr_comment">// The object POJO swaps associated with this bean (if
it has any).</em>
<a class="jxr_linenumber" name="L167" href="#L167">167</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
Map<Class<?>,Mutater<T,?>> toMutaters = <strong
class="jxr_keyword">new</strong> ConcurrentHashMap<>();
-<a class="jxr_linenumber" name="L168" href="#L168">168</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
OptionalSupplier<Tuple2<BeanMeta<T>,String>> beanMeta;
+<a class="jxr_linenumber" name="L168" href="#L168">168</a> <strong
class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong>
OptionalSupplier<BeanMetaValue<T>> beanMeta;
<a class="jxr_linenumber" name="L169" href="#L169">169</a>
<a class="jxr_linenumber" name="L170" href="#L170">170</a> record
KeyValueTypes(ClassMeta<?> keyType, ClassMeta<?> valueType) {
<a class="jxr_linenumber" name="L171" href="#L171">171</a>
Optional<ClassMeta<?>> optKeyType() { <strong
class="jxr_keyword">return</strong> opt(keyType()); }
-<a class="jxr_linenumber" name="L172" href="#L172">172</a>
Optional<ClassMeta<?>> optValueType() { <strong
class="jxr_keyword">return</strong> Optional.of(valueType()); }
+<a class="jxr_linenumber" name="L172" href="#L172">172</a>
Optional<ClassMeta<?>> optValueType() { <strong
class="jxr_keyword">return</strong> opt(valueType()); }
<a class="jxr_linenumber" name="L173" href="#L173">173</a> }
<a class="jxr_linenumber" name="L174" href="#L174">174</a>
<a class="jxr_linenumber" name="L175" href="#L175">175</a> record
BeanMetaValue<T>(BeanMeta<T> beanMeta, String notABeanReason) {
-<a class="jxr_linenumber" name="L176" href="#L176">176</a> <strong
class="jxr_keyword">public</strong> Optional<BeanMeta<T>>
optBeanMeta() { <strong class="jxr_keyword">return</strong> opt(beanMeta()); }
-<a class="jxr_linenumber" name="L177" href="#L177">177</a> <strong
class="jxr_keyword">public</strong> Optional<String> optNotABeanReason()
{ <strong class="jxr_keyword">return</strong> opt(notABeanReason()); }
+<a class="jxr_linenumber" name="L176" href="#L176">176</a>
Optional<BeanMeta<T>> optBeanMeta() { <strong
class="jxr_keyword">return</strong> opt(beanMeta()); }
+<a class="jxr_linenumber" name="L177" href="#L177">177</a>
Optional<String> optNotABeanReason() { <strong
class="jxr_keyword">return</strong> opt(notABeanReason()); }
<a class="jxr_linenumber" name="L178" href="#L178">178</a> }
<a class="jxr_linenumber" name="L179" href="#L179">179</a>
<a class="jxr_linenumber" name="L180" href="#L180">180</a> <em
class="jxr_javadoccomment">/**</em>
@@ -339,7 +339,7 @@
<a class="jxr_linenumber" name="L331" href="#L331">331</a> <strong
class="jxr_keyword">this</strong>.fromStringMethod = mainType.fromStringMethod;
<a class="jxr_linenumber" name="L332" href="#L332">332</a> <strong
class="jxr_keyword">this</strong>.beanContext = mainType.beanContext;
<a class="jxr_linenumber" name="L333" href="#L333">333</a> <strong
class="jxr_keyword">this</strong>.elementType = elementType != <strong
class="jxr_keyword">null</strong> ? memoize(()->elementType) :
mainType.elementType;
-<a class="jxr_linenumber" name="L334" href="#L334">334</a> <strong
class="jxr_keyword">this</strong>.keyValueTypes = (keyType != <strong
class="jxr_keyword">null</strong> || valueType != <strong
class="jxr_keyword">null</strong>) ? memoize(()->Tuple2.of(keyType,
valueType)) : mainType.keyValueTypes;
+<a class="jxr_linenumber" name="L334" href="#L334">334</a> <strong
class="jxr_keyword">this</strong>.keyValueTypes = (keyType != <strong
class="jxr_keyword">null</strong> || valueType != <strong
class="jxr_keyword">null</strong>) ? memoize(()-><strong
class="jxr_keyword">new</strong> KeyValueTypes(keyType, valueType)) :
mainType.keyValueTypes;
<a class="jxr_linenumber" name="L335" href="#L335">335</a> <strong
class="jxr_keyword">this</strong>.beanMeta = mainType.beanMeta;
<a class="jxr_linenumber" name="L336" href="#L336">336</a> <strong
class="jxr_keyword">this</strong>.swaps = mainType.swaps;
<a class="jxr_linenumber" name="L337" href="#L337">337</a> <strong
class="jxr_keyword">this</strong>.exampleMethod = mainType.exampleMethod;
@@ -483,7 +483,7 @@
<a class="jxr_linenumber" name="L475" href="#L475">475</a> <em
class="jxr_javadoccomment"> * this class.</em>
<a class="jxr_linenumber" name="L476" href="#L476">476</a> <em
class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L477" href="#L477">477</a> <strong
class="jxr_keyword">public</strong> BeanMeta<T> getBeanMeta() {
-<a class="jxr_linenumber" name="L478" href="#L478">478</a> <strong
class="jxr_keyword">return</strong> beanMeta.get().getA();
+<a class="jxr_linenumber" name="L478" href="#L478">478</a> <strong
class="jxr_keyword">return</strong> beanMeta.get().beanMeta();
<a class="jxr_linenumber" name="L479" href="#L479">479</a> }
<a class="jxr_linenumber" name="L480" href="#L480">480</a>
<a class="jxr_linenumber" name="L481" href="#L481">481</a> <em
class="jxr_javadoccomment">/**</em>
@@ -633,7 +633,7 @@
<a class="jxr_linenumber" name="L625" href="#L625">625</a> <em
class="jxr_javadoccomment"> * @return The key class type, or
<jk>null</jk> if this class is not a Map.</em>
<a class="jxr_linenumber" name="L626" href="#L626">626</a> <em
class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L627" href="#L627">627</a> <strong
class="jxr_keyword">public</strong> ClassMeta<?> getKeyType() {
-<a class="jxr_linenumber" name="L628" href="#L628">628</a> <strong
class="jxr_keyword">return</strong> keyValueTypes.get().getA();
+<a class="jxr_linenumber" name="L628" href="#L628">628</a> <strong
class="jxr_keyword">return</strong> keyValueTypes.get().keyType();
<a class="jxr_linenumber" name="L629" href="#L629">629</a> }
<a class="jxr_linenumber" name="L630" href="#L630">630</a>
<a class="jxr_linenumber" name="L631" href="#L631">631</a> <em
class="jxr_javadoccomment">/**</em>
@@ -651,7 +651,7 @@
<a class="jxr_linenumber" name="L643" href="#L643">643</a> <em
class="jxr_javadoccomment"> * @return The reason why this class is not a
bean, or <jk>null</jk> if it is a bean.</em>
<a class="jxr_linenumber" name="L644" href="#L644">644</a> <em
class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L645" href="#L645">645</a> <strong
class="jxr_keyword">public</strong> <strong
class="jxr_keyword">synchronized</strong> String getNotABeanReason() {
-<a class="jxr_linenumber" name="L646" href="#L646">646</a> <strong
class="jxr_keyword">return</strong> beanMeta.get().getB();
+<a class="jxr_linenumber" name="L646" href="#L646">646</a> <strong
class="jxr_keyword">return</strong> beanMeta.get().notABeanReason();
<a class="jxr_linenumber" name="L647" href="#L647">647</a> }
<a class="jxr_linenumber" name="L648" href="#L648">648</a>
<a class="jxr_linenumber" name="L649" href="#L649">649</a> <em
class="jxr_javadoccomment">/**</em>
@@ -820,7 +820,7 @@
<a class="jxr_linenumber" name="L812" href="#L812">812</a> <em
class="jxr_javadoccomment"> * @return The value class type, or
<jk>null</jk> if this class is not a Map.</em>
<a class="jxr_linenumber" name="L813" href="#L813">813</a> <em
class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L814" href="#L814">814</a> <strong
class="jxr_keyword">public</strong> ClassMeta<?> getValueType() {
-<a class="jxr_linenumber" name="L815" href="#L815">815</a> <strong
class="jxr_keyword">return</strong> keyValueTypes.get().getB();
+<a class="jxr_linenumber" name="L815" href="#L815">815</a> <strong
class="jxr_keyword">return</strong> keyValueTypes.get().valueType();
<a class="jxr_linenumber" name="L816" href="#L816">816</a> }
<a class="jxr_linenumber" name="L817" href="#L817">817</a>
<a class="jxr_linenumber" name="L818" href="#L818">818</a> <em
class="jxr_javadoccomment">/**</em>
@@ -1342,466 +1342,467 @@
<a class="jxr_linenumber" name="L1334" href="#L1334">1334</a> <strong
class="jxr_keyword">return</strong> BeanFilter.create(<strong
class="jxr_keyword">inner</strong>()).applyAnnotations(reverse(l.stream().map(AnnotationInfo::<strong
class="jxr_keyword">inner</strong>).toList())).build();
<a class="jxr_linenumber" name="L1335" href="#L1335">1335</a> }
<a class="jxr_linenumber" name="L1336" href="#L1336">1336</a>
-<a class="jxr_linenumber" name="L1337" href="#L1337">1337</a> <strong
class="jxr_keyword">private</strong> Tuple2<BeanMeta<T>,String>
findBeanMeta() {
+<a class="jxr_linenumber" name="L1337" href="#L1337">1337</a> <strong
class="jxr_keyword">private</strong> BeanMetaValue<T> findBeanMeta() {
<a class="jxr_linenumber" name="L1338" href="#L1338">1338</a> <strong
class="jxr_keyword">if</strong> (! cat.isUnknown())
-<a class="jxr_linenumber" name="L1339" href="#L1339">1339</a>
<strong class="jxr_keyword">return</strong> Tuple2.of(<strong
class="jxr_keyword">null</strong>, <span class="jxr_string">"Known non-bean
type"</span>);
-<a class="jxr_linenumber" name="L1340" href="#L1340">1340</a> <strong
class="jxr_keyword">return</strong> BeanMeta.create(<strong
class="jxr_keyword">this</strong>, beanFilter.get(), <strong
class="jxr_keyword">null</strong>, implClass.map(x ->
x.getPublicConstructor(x2 -> x2.hasNumParameters(0)).orElse(<strong
class="jxr_keyword">null</strong>)).orElse(<strong
class="jxr_keyword">null</strong>));
-<a class="jxr_linenumber" name="L1341" href="#L1341">1341</a> }
-<a class="jxr_linenumber" name="L1342" href="#L1342">1342</a>
-<a class="jxr_linenumber" name="L1343" href="#L1343">1343</a> <strong
class="jxr_keyword">private</strong>
Tuple2<ClassMeta<?>,ClassMeta<?>> findKeyValueTypes() {
-<a class="jxr_linenumber" name="L1344" href="#L1344">1344</a> <strong
class="jxr_keyword">if</strong> (cat.is(MAP) && ! cat.is(BEANMAP)) {
-<a class="jxr_linenumber" name="L1345" href="#L1345">1345</a>
<em class="jxr_comment">// If this is a MAP, see if it's parameterized (e.g.
AddressBook extends HashMap<String,Person>)</em>
-<a class="jxr_linenumber" name="L1346" href="#L1346">1346</a>
<strong class="jxr_keyword">var</strong> parameters =
beanContext.findParameters(<strong class="jxr_keyword">inner</strong>(),
<strong class="jxr_keyword">inner</strong>());
-<a class="jxr_linenumber" name="L1347" href="#L1347">1347</a>
<strong class="jxr_keyword">if</strong> (nn(parameters) &&
parameters.length == 2) {
-<a class="jxr_linenumber" name="L1348" href="#L1348">1348</a>
<strong class="jxr_keyword">return</strong> Tuple2.of(parameters[0],
parameters[1]);
-<a class="jxr_linenumber" name="L1349" href="#L1349">1349</a>
}
-<a class="jxr_linenumber" name="L1350" href="#L1350">1350</a>
<strong class="jxr_keyword">return</strong>
Tuple2.of(beanContext.getClassMeta(Object.<strong
class="jxr_keyword">class</strong>), beanContext.getClassMeta(Object.<strong
class="jxr_keyword">class</strong>));
-<a class="jxr_linenumber" name="L1351" href="#L1351">1351</a> }
-<a class="jxr_linenumber" name="L1352" href="#L1352">1352</a> <strong
class="jxr_keyword">return</strong> Tuple2.of(<strong
class="jxr_keyword">null</strong>,<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1353" href="#L1353">1353</a> }
-<a class="jxr_linenumber" name="L1354" href="#L1354">1354</a>
-<a class="jxr_linenumber" name="L1355" href="#L1355">1355</a> <strong
class="jxr_keyword">private</strong> ClassMeta<?> findElementType() {
-<a class="jxr_linenumber" name="L1356" href="#L1356">1356</a> <strong
class="jxr_keyword">if</strong> (beanContext == <strong
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1357" href="#L1357">1357</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1358" href="#L1358">1358</a> <strong
class="jxr_keyword">if</strong> (cat.is(ARRAY)) {
-<a class="jxr_linenumber" name="L1359" href="#L1359">1359</a>
<strong class="jxr_keyword">return</strong> beanContext.getClassMeta(<strong
class="jxr_keyword">inner</strong>().getComponentType(), false);
-<a class="jxr_linenumber" name="L1360" href="#L1360">1360</a> }
<strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (cat.is(COLLECTION) || is(Optional.<strong
class="jxr_keyword">class</strong>)) {
-<a class="jxr_linenumber" name="L1361" href="#L1361">1361</a>
<em class="jxr_comment">// If this is a COLLECTION, see if it's parameterized
(e.g. AddressBook extends LinkedList<Person>)</em>
-<a class="jxr_linenumber" name="L1362" href="#L1362">1362</a>
<strong class="jxr_keyword">var</strong> parameters =
beanContext.findParameters(<strong class="jxr_keyword">inner</strong>(),
<strong class="jxr_keyword">inner</strong>());
-<a class="jxr_linenumber" name="L1363" href="#L1363">1363</a>
<strong class="jxr_keyword">if</strong> (nn(parameters) &&
parameters.length == 1) {
-<a class="jxr_linenumber" name="L1364" href="#L1364">1364</a>
<strong class="jxr_keyword">return</strong> parameters[0];
-<a class="jxr_linenumber" name="L1365" href="#L1365">1365</a>
}
-<a class="jxr_linenumber" name="L1366" href="#L1366">1366</a>
<strong class="jxr_keyword">return</strong>
beanContext.getClassMeta(Object.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L1367" href="#L1367">1367</a> }
-<a class="jxr_linenumber" name="L1368" href="#L1368">1368</a> <strong
class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1369" href="#L1369">1369</a> }
-<a class="jxr_linenumber" name="L1370" href="#L1370">1370</a>
-<a class="jxr_linenumber" name="L1371" href="#L1371">1371</a>
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="L1372" href="#L1372">1372</a> <strong
class="jxr_keyword">private</strong> BuilderSwap<T,?> findBuilderSwap() {
-<a class="jxr_linenumber" name="L1373" href="#L1373">1373</a> <strong
class="jxr_keyword">var</strong> bc = beanContext;
-<a class="jxr_linenumber" name="L1374" href="#L1374">1374</a> <strong
class="jxr_keyword">if</strong> (bc == <strong
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1375" href="#L1375">1375</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1376" href="#L1376">1376</a> <strong
class="jxr_keyword">return</strong>
(BuilderSwap<T,?>)BuilderSwap.findSwapFromObjectClass(bc, <strong
class="jxr_keyword">inner</strong>(), bc.getBeanConstructorVisibility(),
bc.getBeanMethodVisibility());
-<a class="jxr_linenumber" name="L1377" href="#L1377">1377</a> }
-<a class="jxr_linenumber" name="L1378" href="#L1378">1378</a>
-<a class="jxr_linenumber" name="L1379" href="#L1379">1379</a>
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="L1380" href="#L1380">1380</a> <strong
class="jxr_keyword">private</strong> List<ObjectSwap<T,?>>
findSwaps() {
-<a class="jxr_linenumber" name="L1381" href="#L1381">1381</a> <strong
class="jxr_keyword">if</strong> (beanContext == <strong
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1382" href="#L1382">1382</a>
<strong class="jxr_keyword">return</strong> l();
-<a class="jxr_linenumber" name="L1383" href="#L1383">1383</a>
-<a class="jxr_linenumber" name="L1384" href="#L1384">1384</a> <strong
class="jxr_keyword">var</strong> list = <strong
class="jxr_keyword">new</strong> ArrayList<ObjectSwap<T,?>>();
-<a class="jxr_linenumber" name="L1385" href="#L1385">1385</a> <strong
class="jxr_keyword">var</strong> swapArray = beanContext.getSwaps();
-<a class="jxr_linenumber" name="L1386" href="#L1386">1386</a> <strong
class="jxr_keyword">if</strong> (swapArray != <strong
class="jxr_keyword">null</strong> && swapArray.length > 0) {
-<a class="jxr_linenumber" name="L1387" href="#L1387">1387</a>
<strong class="jxr_keyword">var</strong> innerClass = <strong
class="jxr_keyword">inner</strong>();
-<a class="jxr_linenumber" name="L1388" href="#L1388">1388</a>
<strong class="jxr_keyword">for</strong> (<strong
class="jxr_keyword">var</strong> f : swapArray)
-<a class="jxr_linenumber" name="L1389" href="#L1389">1389</a>
<strong class="jxr_keyword">if</strong>
(f.getNormalClass().isParentOf(innerClass))
-<a class="jxr_linenumber" name="L1390" href="#L1390">1390</a>
list.add((ObjectSwap<T,?>)f);
-<a class="jxr_linenumber" name="L1391" href="#L1391">1391</a> }
-<a class="jxr_linenumber" name="L1392" href="#L1392">1392</a>
-<a class="jxr_linenumber" name="L1393" href="#L1393">1393</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
-<a class="jxr_linenumber" name="L1394" href="#L1394">1394</a>
ap.find(Swap.<strong class="jxr_keyword">class</strong>, <strong
class="jxr_keyword">this</strong>).stream().map(AnnotationInfo::<strong
class="jxr_keyword">inner</strong>).forEach(x -> list.add(createSwap(x)));
-<a class="jxr_linenumber" name="L1395" href="#L1395">1395</a> <strong
class="jxr_keyword">var</strong> ds = DefaultSwaps.find(<strong
class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="L1396" href="#L1396">1396</a> <strong
class="jxr_keyword">if</strong> (ds == <strong
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1397" href="#L1397">1397</a>
ds = AutoObjectSwap.find(beanContext, <strong
class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="L1398" href="#L1398">1398</a> <strong
class="jxr_keyword">if</strong> (ds == <strong
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1399" href="#L1399">1399</a>
ds = AutoNumberSwap.find(beanContext, <strong
class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="L1400" href="#L1400">1400</a> <strong
class="jxr_keyword">if</strong> (ds == <strong
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1401" href="#L1401">1401</a>
ds = AutoMapSwap.find(beanContext, <strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="L1402" href="#L1402">1402</a> <strong
class="jxr_keyword">if</strong> (ds == <strong
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1403" href="#L1403">1403</a>
ds = AutoListSwap.find(beanContext, <strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="L1404" href="#L1404">1404</a>
-<a class="jxr_linenumber" name="L1405" href="#L1405">1405</a> <strong
class="jxr_keyword">if</strong> (nn(ds))
-<a class="jxr_linenumber" name="L1406" href="#L1406">1406</a>
list.add((ObjectSwap<T,?>)ds);
-<a class="jxr_linenumber" name="L1407" href="#L1407">1407</a>
-<a class="jxr_linenumber" name="L1408" href="#L1408">1408</a> <strong
class="jxr_keyword">return</strong> u(list);
-<a class="jxr_linenumber" name="L1409" href="#L1409">1409</a> }
-<a class="jxr_linenumber" name="L1410" href="#L1410">1410</a>
-<a class="jxr_linenumber" name="L1411" href="#L1411">1411</a> <strong
class="jxr_keyword">private</strong> List<ObjectSwap<?,?>>
findChildSwaps() {
-<a class="jxr_linenumber" name="L1412" href="#L1412">1412</a> <strong
class="jxr_keyword">if</strong> (beanContext == <strong
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1413" href="#L1413">1413</a>
<strong class="jxr_keyword">return</strong> l();
-<a class="jxr_linenumber" name="L1414" href="#L1414">1414</a> <strong
class="jxr_keyword">var</strong> swapArray = beanContext.getSwaps();
-<a class="jxr_linenumber" name="L1415" href="#L1415">1415</a> <strong
class="jxr_keyword">if</strong> (swapArray == <strong
class="jxr_keyword">null</strong> || swapArray.length == 0)
-<a class="jxr_linenumber" name="L1416" href="#L1416">1416</a>
<strong class="jxr_keyword">return</strong> l();
-<a class="jxr_linenumber" name="L1417" href="#L1417">1417</a> <strong
class="jxr_keyword">var</strong> list = <strong
class="jxr_keyword">new</strong> ArrayList<ObjectSwap<?,?>>();
-<a class="jxr_linenumber" name="L1418" href="#L1418">1418</a> <strong
class="jxr_keyword">var</strong> innerClass = <strong
class="jxr_keyword">inner</strong>();
-<a class="jxr_linenumber" name="L1419" href="#L1419">1419</a> <strong
class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> f :
swapArray)
-<a class="jxr_linenumber" name="L1420" href="#L1420">1420</a>
<strong class="jxr_keyword">if</strong>
(f.getNormalClass().isChildOf(innerClass))
-<a class="jxr_linenumber" name="L1421" href="#L1421">1421</a>
list.add(f);
-<a class="jxr_linenumber" name="L1422" href="#L1422">1422</a> <strong
class="jxr_keyword">return</strong> u(list);
-<a class="jxr_linenumber" name="L1423" href="#L1423">1423</a> }
-<a class="jxr_linenumber" name="L1424" href="#L1424">1424</a>
-<a class="jxr_linenumber" name="L1425" href="#L1425">1425</a> <strong
class="jxr_keyword">private</strong> BidiMap<Object,String>
findEnumValues() {
-<a class="jxr_linenumber" name="L1426" href="#L1426">1426</a> <strong
class="jxr_keyword">if</strong> (! isEnum())
-<a class="jxr_linenumber" name="L1427" href="#L1427">1427</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1428" href="#L1428">1428</a>
-<a class="jxr_linenumber" name="L1429" href="#L1429">1429</a> <strong
class="jxr_keyword">var</strong> bc = beanContext;
-<a class="jxr_linenumber" name="L1430" href="#L1430">1430</a> <strong
class="jxr_keyword">var</strong> useEnumNames = nn(bc) &&
bc.isUseEnumNames();
-<a class="jxr_linenumber" name="L1431" href="#L1431">1431</a>
-<a class="jxr_linenumber" name="L1432" href="#L1432">1432</a> <strong
class="jxr_keyword">var</strong> m =
BidiMap.<Object,String>create().unmodifiable();
-<a class="jxr_linenumber" name="L1433" href="#L1433">1433</a> <strong
class="jxr_keyword">var</strong> c = <strong
class="jxr_keyword">inner</strong>().asSubclass(Enum.<strong
class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L1434" href="#L1434">1434</a>
stream(c.getEnumConstants()).forEach(x -> m.add(x, useEnumNames ? x.name() :
x.toString()));
-<a class="jxr_linenumber" name="L1435" href="#L1435">1435</a> <strong
class="jxr_keyword">return</strong> m.build();
-<a class="jxr_linenumber" name="L1436" href="#L1436">1436</a> }
-<a class="jxr_linenumber" name="L1437" href="#L1437">1437</a>
-<a class="jxr_linenumber" name="L1438" href="#L1438">1438</a>
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="L1439" href="#L1439">1439</a> <strong
class="jxr_keyword">private</strong> String findExample() {
-<a class="jxr_linenumber" name="L1440" href="#L1440">1440</a>
-<a class="jxr_linenumber" name="L1441" href="#L1441">1441</a> <strong
class="jxr_keyword">var</strong> example = beanFilter.map(x ->
x.getExample()).orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1442" href="#L1442">1442</a>
-<a class="jxr_linenumber" name="L1443" href="#L1443">1443</a> <strong
class="jxr_keyword">if</strong> (example == <strong
class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1444" href="#L1444">1444</a>
example = marshalledFilter.map(x -> x.getExample()).orElse(<strong
class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1445" href="#L1445">1445</a>
-<a class="jxr_linenumber" name="L1446" href="#L1446">1446</a> <strong
class="jxr_keyword">if</strong> (example == <strong
class="jxr_keyword">null</strong> && nn(beanContext))
-<a class="jxr_linenumber" name="L1447" href="#L1447">1447</a>
example = beanContext.getAnnotationProvider().find(Example.<strong
class="jxr_keyword">class</strong>, <strong
class="jxr_keyword">this</strong>).stream().map(x -> x.<strong
class="jxr_keyword">inner</strong>().value()).filter(Utils::isNotEmpty).findFirst().orElse(<strong
class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1448" href="#L1448">1448</a>
-<a class="jxr_linenumber" name="L1449" href="#L1449">1449</a> <strong
class="jxr_keyword">if</strong> (example == <strong
class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1450" href="#L1450">1450</a>
<strong class="jxr_keyword">if</strong> (isAny(<strong
class="jxr_keyword">boolean</strong>.<strong
class="jxr_keyword">class</strong>, Boolean.<strong
class="jxr_keyword">class</strong>)) {
-<a class="jxr_linenumber" name="L1451" href="#L1451">1451</a>
example = <span class="jxr_string">"true"</span>;
-<a class="jxr_linenumber" name="L1452" href="#L1452">1452</a>
} <strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (isAny(<strong
class="jxr_keyword">char</strong>.<strong class="jxr_keyword">class</strong>,
Character.<strong class="jxr_keyword">class</strong>)) {
-<a class="jxr_linenumber" name="L1453" href="#L1453">1453</a>
example = <span class="jxr_string">"a"</span>;
-<a class="jxr_linenumber" name="L1454" href="#L1454">1454</a>
} <strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (cat.is(CHARSEQ)) {
-<a class="jxr_linenumber" name="L1455" href="#L1455">1455</a>
example = <span class="jxr_string">"foo"</span>;
-<a class="jxr_linenumber" name="L1456" href="#L1456">1456</a>
} <strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (cat.is(ENUM)) {
-<a class="jxr_linenumber" name="L1457" href="#L1457">1457</a>
Iterator<? <strong class="jxr_keyword">extends</strong>
Enum<?>> i = EnumSet.allOf(<strong
class="jxr_keyword">inner</strong>().asSubclass(Enum.<strong
class="jxr_keyword">class</strong>)).iterator();
-<a class="jxr_linenumber" name="L1458" href="#L1458">1458</a>
example = i.hasNext() ? (beanContext.isUseEnumNames() ? i.next().name()
: i.next().toString()) : <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1459" href="#L1459">1459</a>
} <strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (isAny(<strong
class="jxr_keyword">float</strong>.<strong class="jxr_keyword">class</strong>,
Float.<strong class="jxr_keyword">class</strong>, <strong
class="jxr_keyword">double</strong>.<strong class="jxr_keyword">class</strong>,
Double.<strong class="jxr_keyword">class</strong>)) {
-<a class="jxr_linenumber" name="L1460" href="#L1460">1460</a>
example = <span class="jxr_string">"1.0"</span>;
-<a class="jxr_linenumber" name="L1461" href="#L1461">1461</a>
} <strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (isAny(<strong
class="jxr_keyword">short</strong>.<strong class="jxr_keyword">class</strong>,
Short.<strong class="jxr_keyword">class</strong>, <strong
class="jxr_keyword">int</strong>.<strong class="jxr_keyword">class</strong>,
Integer.<strong class="jxr_keyword">class</strong>, <strong
class="jxr_keyword">long</strong>.<strong class="jxr_k [...]
-<a class="jxr_linenumber" name="L1462" href="#L1462">1462</a>
example = <span class="jxr_string">"1"</span>;
-<a class="jxr_linenumber" name="L1463" href="#L1463">1463</a>
}
-<a class="jxr_linenumber" name="L1464" href="#L1464">1464</a> }
-<a class="jxr_linenumber" name="L1465" href="#L1465">1465</a>
-<a class="jxr_linenumber" name="L1466" href="#L1466">1466</a> <strong
class="jxr_keyword">return</strong> example;
-<a class="jxr_linenumber" name="L1467" href="#L1467">1467</a> }
-<a class="jxr_linenumber" name="L1468" href="#L1468">1468</a>
-<a class="jxr_linenumber" name="L1469" href="#L1469">1469</a> <strong
class="jxr_keyword">private</strong> <a name="FieldInfo"
href="../../../org/apache/juneau/commons/reflect/FieldInfo.html#FieldInfo">FieldInfo</a>
findExampleField() {
-<a class="jxr_linenumber" name="L1470" href="#L1470">1470</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
-<a class="jxr_linenumber" name="L1471" href="#L1471">1471</a>
-<a class="jxr_linenumber" name="L1472" href="#L1472">1472</a> <strong
class="jxr_keyword">return</strong> getDeclaredFields()
-<a class="jxr_linenumber" name="L1473" href="#L1473">1473</a>
.stream()
-<a class="jxr_linenumber" name="L1474" href="#L1474">1474</a>
.filter(x -> x.isStatic() && isParentOf(x.getFieldType()) &&
ap.has(Example.<strong class="jxr_keyword">class</strong>, x))
-<a class="jxr_linenumber" name="L1475" href="#L1475">1475</a>
.map(x -> x.accessible())
-<a class="jxr_linenumber" name="L1476" href="#L1476">1476</a>
.findFirst()
-<a class="jxr_linenumber" name="L1477" href="#L1477">1477</a>
.orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1478" href="#L1478">1478</a> }
-<a class="jxr_linenumber" name="L1479" href="#L1479">1479</a>
-<a class="jxr_linenumber" name="L1480" href="#L1480">1480</a> <strong
class="jxr_keyword">private</strong> <a name="MethodInfo"
href="../../../org/apache/juneau/commons/reflect/MethodInfo.html#MethodInfo">MethodInfo</a>
findExampleMethod() {
-<a class="jxr_linenumber" name="L1481" href="#L1481">1481</a> <em
class="jxr_comment">// @formatter:off</em>
-<a class="jxr_linenumber" name="L1482" href="#L1482">1482</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
-<a class="jxr_linenumber" name="L1483" href="#L1483">1483</a>
-<a class="jxr_linenumber" name="L1484" href="#L1484">1484</a> <em
class="jxr_comment">// Option 1: Public example() or @Example method.</em>
-<a class="jxr_linenumber" name="L1485" href="#L1485">1485</a> <strong
class="jxr_keyword">var</strong> m = getPublicMethod(
-<a class="jxr_linenumber" name="L1486" href="#L1486">1486</a>
x -> x.isStatic() && x.isNotDeprecated() && (x.hasName(<span
class="jxr_string">"example"</span>) || ap.has(Example.<strong
class="jxr_keyword">class</strong>, x)) &&
x.hasParameterTypesLenient(BeanSession.<strong
class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L1487" href="#L1487">1487</a> );
-<a class="jxr_linenumber" name="L1488" href="#L1488">1488</a> <strong
class="jxr_keyword">if</strong> (m.isPresent()) <strong
class="jxr_keyword">return</strong> m.get();
-<a class="jxr_linenumber" name="L1489" href="#L1489">1489</a>
-<a class="jxr_linenumber" name="L1490" href="#L1490">1490</a> <em
class="jxr_comment">// Option 2: Non-public @Example method.</em>
-<a class="jxr_linenumber" name="L1491" href="#L1491">1491</a> <strong
class="jxr_keyword">return</strong> getDeclaredMethods()
-<a class="jxr_linenumber" name="L1492" href="#L1492">1492</a>
.stream()
-<a class="jxr_linenumber" name="L1493" href="#L1493">1493</a>
.flatMap(x -> x.getMatchingMethods().stream())
-<a class="jxr_linenumber" name="L1494" href="#L1494">1494</a>
.filter(x -> x.isStatic() && ap.has(Example.<strong
class="jxr_keyword">class</strong>, x))
-<a class="jxr_linenumber" name="L1495" href="#L1495">1495</a>
.map(x -> x.accessible())
-<a class="jxr_linenumber" name="L1496" href="#L1496">1496</a>
.findFirst()
-<a class="jxr_linenumber" name="L1497" href="#L1497">1497</a>
.orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1498" href="#L1498">1498</a> <em
class="jxr_comment">// @formatter:on</em>
-<a class="jxr_linenumber" name="L1499" href="#L1499">1499</a> }
-<a class="jxr_linenumber" name="L1500" href="#L1500">1500</a>
-<a class="jxr_linenumber" name="L1501" href="#L1501">1501</a> <strong
class="jxr_keyword">private</strong> <a name="MethodInfo"
href="../../../org/apache/juneau/commons/reflect/MethodInfo.html#MethodInfo">MethodInfo</a>
findFromStringMethod() {
-<a class="jxr_linenumber" name="L1502" href="#L1502">1502</a> <em
class="jxr_comment">// Find static fromString(String) or equivalent method.</em>
-<a class="jxr_linenumber" name="L1503" href="#L1503">1503</a> <em
class="jxr_comment">// fromString() must be checked before valueOf() so that
Enum classes can create their own</em>
-<a class="jxr_linenumber" name="L1504" href="#L1504">1504</a> <em
class="jxr_comment">// specialized fromString() methods to
override the behavior of Enum.valueOf(String).</em>
-<a class="jxr_linenumber" name="L1505" href="#L1505">1505</a> <em
class="jxr_comment">// valueOf() is used by enums.</em>
-<a class="jxr_linenumber" name="L1506" href="#L1506">1506</a> <em
class="jxr_comment">// parse() is used by the java logging Level class.</em>
-<a class="jxr_linenumber" name="L1507" href="#L1507">1507</a> <em
class="jxr_comment">// forName() is used by Class and Charset</em>
-<a class="jxr_linenumber" name="L1508" href="#L1508">1508</a> <em
class="jxr_comment">// @formatter:off</em>
-<a class="jxr_linenumber" name="L1509" href="#L1509">1509</a> <strong
class="jxr_keyword">var</strong> names = a(<span
class="jxr_string">"fromString"</span>, <span
class="jxr_string">"fromValue"</span>, <span
class="jxr_string">"valueOf"</span>, <span class="jxr_string">"parse"</span>,
<span class="jxr_string">"parseString"</span>, <span
class="jxr_string">"forName"</span>, <span
class="jxr_string">"forString"</span>);
-<a class="jxr_linenumber" name="L1510" href="#L1510">1510</a> <strong
class="jxr_keyword">return</strong> getPublicMethod(
-<a class="jxr_linenumber" name="L1511" href="#L1511">1511</a>
x -> x.isStatic() && x.isNotDeprecated() &&
x.hasReturnType(<strong class="jxr_keyword">this</strong>) &&
x.hasParameterTypes(String.<strong class="jxr_keyword">class</strong>)
&& contains(x.getName(), names)
-<a class="jxr_linenumber" name="L1512" href="#L1512">1512</a>
).orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1513" href="#L1513">1513</a> <em
class="jxr_comment">// @formatter:on</em>
-<a class="jxr_linenumber" name="L1514" href="#L1514">1514</a> }
-<a class="jxr_linenumber" name="L1515" href="#L1515">1515</a>
-<a class="jxr_linenumber" name="L1516" href="#L1516">1516</a>
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="L1517" href="#L1517">1517</a> <strong
class="jxr_keyword">private</strong> ClassInfoTyped<? <strong
class="jxr_keyword">extends</strong> T> findImplClass() {
-<a class="jxr_linenumber" name="L1518" href="#L1518">1518</a>
-<a class="jxr_linenumber" name="L1519" href="#L1519">1519</a> <strong
class="jxr_keyword">if</strong> (is(Object.<strong
class="jxr_keyword">class</strong>))
-<a class="jxr_linenumber" name="L1520" href="#L1520">1520</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1521" href="#L1521">1521</a>
-<a class="jxr_linenumber" name="L1522" href="#L1522">1522</a> <strong
class="jxr_keyword">var</strong> v = beanFilter.map(x ->
x.getImplClass()).map(ReflectionUtils::info).orElse(<strong
class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1523" href="#L1523">1523</a>
-<a class="jxr_linenumber" name="L1524" href="#L1524">1524</a> <strong
class="jxr_keyword">if</strong> (v == <strong class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1525" href="#L1525">1525</a>
v = marshalledFilter.map(x ->
x.getImplClass()).map(ReflectionUtils::info).orElse(<strong
class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1526" href="#L1526">1526</a>
-<a class="jxr_linenumber" name="L1527" href="#L1527">1527</a> <strong
class="jxr_keyword">return</strong> (ClassInfoTyped<? <strong
class="jxr_keyword">extends</strong> T>)v;
-<a class="jxr_linenumber" name="L1528" href="#L1528">1528</a> }
-<a class="jxr_linenumber" name="L1529" href="#L1529">1529</a>
-<a class="jxr_linenumber" name="L1530" href="#L1530">1530</a> <strong
class="jxr_keyword">private</strong> <a name="MarshalledFilter"
href="../../../org/apache/juneau/MarshalledFilter.html#MarshalledFilter">MarshalledFilter</a>
findMarshalledFilter() {
-<a class="jxr_linenumber" name="L1531" href="#L1531">1531</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
-<a class="jxr_linenumber" name="L1532" href="#L1532">1532</a> <strong
class="jxr_keyword">var</strong> l = ap.find(Marshalled.<strong
class="jxr_keyword">class</strong>, <strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="L1533" href="#L1533">1533</a> <strong
class="jxr_keyword">if</strong> (l.isEmpty())
-<a class="jxr_linenumber" name="L1534" href="#L1534">1534</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1535" href="#L1535">1535</a> <strong
class="jxr_keyword">return</strong> MarshalledFilter.create(<strong
class="jxr_keyword">inner</strong>()).applyAnnotations(reverse(l.stream().map(AnnotationInfo::<strong
class="jxr_keyword">inner</strong>).toList())).build();
-<a class="jxr_linenumber" name="L1536" href="#L1536">1536</a> }
-<a class="jxr_linenumber" name="L1537" href="#L1537">1537</a>
-<a class="jxr_linenumber" name="L1538" href="#L1538">1538</a> <strong
class="jxr_keyword">private</strong> Property<T,Object>
findNameProperty() {
-<a class="jxr_linenumber" name="L1539" href="#L1539">1539</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
-<a class="jxr_linenumber" name="L1540" href="#L1540">1540</a>
-<a class="jxr_linenumber" name="L1541" href="#L1541">1541</a> <strong
class="jxr_keyword">var</strong> s = getAllFields()
-<a class="jxr_linenumber" name="L1542" href="#L1542">1542</a>
.stream()
-<a class="jxr_linenumber" name="L1543" href="#L1543">1543</a>
.filter(x -> ap.has(NameProperty.<strong class="jxr_keyword">class</strong>,
x))
-<a class="jxr_linenumber" name="L1544" href="#L1544">1544</a>
.map(x -> x.accessible())
-<a class="jxr_linenumber" name="L1545" href="#L1545">1545</a>
.map(x -> Property.<T,Object>create().field(x).build())
-<a class="jxr_linenumber" name="L1546" href="#L1546">1546</a>
.findFirst();
-<a class="jxr_linenumber" name="L1547" href="#L1547">1547</a>
-<a class="jxr_linenumber" name="L1548" href="#L1548">1548</a> <strong
class="jxr_keyword">if</strong> (s.isPresent()) <strong
class="jxr_keyword">return</strong> s.get();
-<a class="jxr_linenumber" name="L1549" href="#L1549">1549</a>
-<a class="jxr_linenumber" name="L1550" href="#L1550">1550</a> <strong
class="jxr_keyword">var</strong> builder = Property.<T,Object>create();
-<a class="jxr_linenumber" name="L1551" href="#L1551">1551</a>
-<a class="jxr_linenumber" name="L1552" href="#L1552">1552</a> <em
class="jxr_comment">// Look for setter method (1 parameter) with
@NameProperty</em>
-<a class="jxr_linenumber" name="L1553" href="#L1553">1553</a> <strong
class="jxr_keyword">var</strong> setterMethod = getAllMethods()
-<a class="jxr_linenumber" name="L1554" href="#L1554">1554</a>
.stream()
-<a class="jxr_linenumber" name="L1555" href="#L1555">1555</a>
.filter(x -> ap.has(NameProperty.<strong class="jxr_keyword">class</strong>,
x) && x.hasNumParameters(1))
-<a class="jxr_linenumber" name="L1556" href="#L1556">1556</a>
.findFirst();
-<a class="jxr_linenumber" name="L1557" href="#L1557">1557</a>
-<a class="jxr_linenumber" name="L1558" href="#L1558">1558</a> <strong
class="jxr_keyword">if</strong> (setterMethod.isPresent()) {
-<a class="jxr_linenumber" name="L1559" href="#L1559">1559</a>
builder.setter(setterMethod.get().accessible());
-<a class="jxr_linenumber" name="L1560" href="#L1560">1560</a>
-<a class="jxr_linenumber" name="L1561" href="#L1561">1561</a>
<em class="jxr_comment">// Try to find a corresponding getter method (even if
not annotated)</em>
-<a class="jxr_linenumber" name="L1562" href="#L1562">1562</a>
<em class="jxr_comment">// If setter is "setName", look for "getName" or
"isName"</em>
-<a class="jxr_linenumber" name="L1563" href="#L1563">1563</a>
<strong class="jxr_keyword">var</strong> setterName =
setterMethod.get().getSimpleName();
-<a class="jxr_linenumber" name="L1564" href="#L1564">1564</a>
<strong class="jxr_keyword">if</strong> (setterName.startsWith(<span
class="jxr_string">"set"</span>) && setterName.length() > 3) {
-<a class="jxr_linenumber" name="L1565" href="#L1565">1565</a>
<strong class="jxr_keyword">var</strong> propertyName =
setterName.substring(3);
-<a class="jxr_linenumber" name="L1566" href="#L1566">1566</a>
<strong class="jxr_keyword">var</strong> getterName1 = <span
class="jxr_string">"get"</span> + propertyName;
-<a class="jxr_linenumber" name="L1567" href="#L1567">1567</a>
<strong class="jxr_keyword">var</strong> getterName2 = <span
class="jxr_string">"is"</span> + propertyName;
-<a class="jxr_linenumber" name="L1568" href="#L1568">1568</a>
-<a class="jxr_linenumber" name="L1569" href="#L1569">1569</a>
<strong class="jxr_keyword">var</strong> getter = getAllMethods()
-<a class="jxr_linenumber" name="L1570" href="#L1570">1570</a>
.stream()
-<a class="jxr_linenumber" name="L1571" href="#L1571">1571</a>
.filter(x -> !x.isStatic() && x.hasNumParameters(0)
&&
-<a class="jxr_linenumber" name="L1572" href="#L1572">1572</a>
(x.hasName(getterName1) || x.hasName(getterName2))
&&
-<a class="jxr_linenumber" name="L1573" href="#L1573">1573</a>
!x.getReturnType().is(Void.TYPE))
-<a class="jxr_linenumber" name="L1574" href="#L1574">1574</a>
.findFirst();
-<a class="jxr_linenumber" name="L1575" href="#L1575">1575</a>
-<a class="jxr_linenumber" name="L1576" href="#L1576">1576</a>
<strong class="jxr_keyword">if</strong> (getter.isPresent()) {
-<a class="jxr_linenumber" name="L1577" href="#L1577">1577</a>
builder.getter(getter.get().accessible());
-<a class="jxr_linenumber" name="L1578" href="#L1578">1578</a>
} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L1579" href="#L1579">1579</a>
<em class="jxr_comment">// Try to find a field with the
property name (lowercase first letter)</em>
-<a class="jxr_linenumber" name="L1580" href="#L1580">1580</a>
<strong class="jxr_keyword">var</strong> fieldName =
Character.toLowerCase(propertyName.charAt(0)) + propertyName.substring(1);
-<a class="jxr_linenumber" name="L1581" href="#L1581">1581</a>
<strong class="jxr_keyword">var</strong> field = getAllFields()
-<a class="jxr_linenumber" name="L1582" href="#L1582">1582</a>
.stream()
-<a class="jxr_linenumber" name="L1583" href="#L1583">1583</a>
.filter(x -> !x.isStatic() &&
x.hasName(fieldName))
-<a class="jxr_linenumber" name="L1584" href="#L1584">1584</a>
.findFirst();
-<a class="jxr_linenumber" name="L1585" href="#L1585">1585</a>
-<a class="jxr_linenumber" name="L1586" href="#L1586">1586</a>
<strong class="jxr_keyword">if</strong> (field.isPresent()) {
-<a class="jxr_linenumber" name="L1587" href="#L1587">1587</a>
<strong class="jxr_keyword">var</strong> f =
field.get().accessible();
-<a class="jxr_linenumber" name="L1588" href="#L1588">1588</a>
builder.getter(obj -> f.get(obj));
-<a class="jxr_linenumber" name="L1589" href="#L1589">1589</a>
}
-<a class="jxr_linenumber" name="L1590" href="#L1590">1590</a>
}
-<a class="jxr_linenumber" name="L1591" href="#L1591">1591</a>
}
-<a class="jxr_linenumber" name="L1592" href="#L1592">1592</a> }
-<a class="jxr_linenumber" name="L1593" href="#L1593">1593</a>
-<a class="jxr_linenumber" name="L1594" href="#L1594">1594</a> <em
class="jxr_comment">// Look for getter method (0 parameters, non-void return)
with @NameProperty</em>
-<a class="jxr_linenumber" name="L1595" href="#L1595">1595</a> <strong
class="jxr_keyword">var</strong> getterMethod = getAllMethods()
-<a class="jxr_linenumber" name="L1596" href="#L1596">1596</a>
.stream()
-<a class="jxr_linenumber" name="L1597" href="#L1597">1597</a>
.filter(x -> ap.has(NameProperty.<strong class="jxr_keyword">class</strong>,
x) && x.hasNumParameters(0) && !x.getReturnType().is(Void.TYPE))
-<a class="jxr_linenumber" name="L1598" href="#L1598">1598</a>
.findFirst();
-<a class="jxr_linenumber" name="L1599" href="#L1599">1599</a>
-<a class="jxr_linenumber" name="L1600" href="#L1600">1600</a> <strong
class="jxr_keyword">if</strong> (getterMethod.isPresent()) {
-<a class="jxr_linenumber" name="L1601" href="#L1601">1601</a>
builder.getter(getterMethod.get().accessible());
-<a class="jxr_linenumber" name="L1602" href="#L1602">1602</a> }
-<a class="jxr_linenumber" name="L1603" href="#L1603">1603</a>
-<a class="jxr_linenumber" name="L1604" href="#L1604">1604</a> <em
class="jxr_comment">// Return null if neither setter nor getter was found</em>
-<a class="jxr_linenumber" name="L1605" href="#L1605">1605</a> <strong
class="jxr_keyword">if</strong> (setterMethod.isEmpty() &&
getterMethod.isEmpty())
-<a class="jxr_linenumber" name="L1606" href="#L1606">1606</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1607" href="#L1607">1607</a>
-<a class="jxr_linenumber" name="L1608" href="#L1608">1608</a> <strong
class="jxr_keyword">return</strong> builder.build();
-<a class="jxr_linenumber" name="L1609" href="#L1609">1609</a> }
-<a class="jxr_linenumber" name="L1610" href="#L1610">1610</a>
-<a class="jxr_linenumber" name="L1611" href="#L1611">1611</a> <strong
class="jxr_keyword">private</strong> <a name="ConstructorInfo"
href="../../../org/apache/juneau/commons/reflect/ConstructorInfo.html#ConstructorInfo">ConstructorInfo</a>
findNoArgConstructor() {
-<a class="jxr_linenumber" name="L1612" href="#L1612">1612</a>
-<a class="jxr_linenumber" name="L1613" href="#L1613">1613</a> <strong
class="jxr_keyword">if</strong> (is(Object.<strong
class="jxr_keyword">class</strong>))
-<a class="jxr_linenumber" name="L1614" href="#L1614">1614</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1615" href="#L1615">1615</a>
-<a class="jxr_linenumber" name="L1616" href="#L1616">1616</a> <strong
class="jxr_keyword">if</strong> (implClass.isPresent())
-<a class="jxr_linenumber" name="L1617" href="#L1617">1617</a>
<strong class="jxr_keyword">return</strong>
implClass.get().getPublicConstructor(x ->
x.hasNumParameters(0)).orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1618" href="#L1618">1618</a>
-<a class="jxr_linenumber" name="L1619" href="#L1619">1619</a> <strong
class="jxr_keyword">if</strong> (isAbstract())
-<a class="jxr_linenumber" name="L1620" href="#L1620">1620</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1621" href="#L1621">1621</a>
-<a class="jxr_linenumber" name="L1622" href="#L1622">1622</a> <strong
class="jxr_keyword">var</strong> numParams = isMemberClass() &&
isNotStatic() ? 1 : 0;
-<a class="jxr_linenumber" name="L1623" href="#L1623">1623</a> <strong
class="jxr_keyword">return</strong> getPublicConstructors()
-<a class="jxr_linenumber" name="L1624" href="#L1624">1624</a>
.stream()
-<a class="jxr_linenumber" name="L1625" href="#L1625">1625</a>
.filter(x -> x.isPublic() && x.isNotDeprecated() &&
x.hasNumParameters(numParams))
-<a class="jxr_linenumber" name="L1626" href="#L1626">1626</a>
.findFirst()
-<a class="jxr_linenumber" name="L1627" href="#L1627">1627</a>
.orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1628" href="#L1628">1628</a> }
-<a class="jxr_linenumber" name="L1629" href="#L1629">1629</a>
-<a class="jxr_linenumber" name="L1630" href="#L1630">1630</a> <strong
class="jxr_keyword">private</strong> Property<T,Object>
findParentProperty() {
-<a class="jxr_linenumber" name="L1631" href="#L1631">1631</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
-<a class="jxr_linenumber" name="L1632" href="#L1632">1632</a>
-<a class="jxr_linenumber" name="L1633" href="#L1633">1633</a> <strong
class="jxr_keyword">var</strong> s = getAllFields()
-<a class="jxr_linenumber" name="L1634" href="#L1634">1634</a>
.stream()
-<a class="jxr_linenumber" name="L1635" href="#L1635">1635</a>
.filter(x -> ap.has(ParentProperty.<strong
class="jxr_keyword">class</strong>, x))
-<a class="jxr_linenumber" name="L1636" href="#L1636">1636</a>
.map(x -> x.accessible())
-<a class="jxr_linenumber" name="L1637" href="#L1637">1637</a>
.map(x -> Property.<T,Object>create().field(x).build())
-<a class="jxr_linenumber" name="L1638" href="#L1638">1638</a>
.findFirst();
-<a class="jxr_linenumber" name="L1639" href="#L1639">1639</a>
-<a class="jxr_linenumber" name="L1640" href="#L1640">1640</a> <strong
class="jxr_keyword">if</strong> (s.isPresent()) <strong
class="jxr_keyword">return</strong> s.get();
-<a class="jxr_linenumber" name="L1641" href="#L1641">1641</a>
-<a class="jxr_linenumber" name="L1642" href="#L1642">1642</a> <strong
class="jxr_keyword">var</strong> builder = Property.<T,Object>create();
-<a class="jxr_linenumber" name="L1643" href="#L1643">1643</a>
-<a class="jxr_linenumber" name="L1644" href="#L1644">1644</a> <em
class="jxr_comment">// Look for setter method (1 parameter) with
@ParentProperty</em>
-<a class="jxr_linenumber" name="L1645" href="#L1645">1645</a> <strong
class="jxr_keyword">var</strong> setterMethod = getAllMethods()
-<a class="jxr_linenumber" name="L1646" href="#L1646">1646</a>
.stream()
-<a class="jxr_linenumber" name="L1647" href="#L1647">1647</a>
.filter(x -> ap.has(ParentProperty.<strong
class="jxr_keyword">class</strong>, x) && x.hasNumParameters(1))
-<a class="jxr_linenumber" name="L1648" href="#L1648">1648</a>
.findFirst();
-<a class="jxr_linenumber" name="L1649" href="#L1649">1649</a>
-<a class="jxr_linenumber" name="L1650" href="#L1650">1650</a> <strong
class="jxr_keyword">if</strong> (setterMethod.isPresent()) {
-<a class="jxr_linenumber" name="L1651" href="#L1651">1651</a>
builder.setter(setterMethod.get().accessible());
-<a class="jxr_linenumber" name="L1652" href="#L1652">1652</a>
-<a class="jxr_linenumber" name="L1653" href="#L1653">1653</a>
<em class="jxr_comment">// Try to find a corresponding getter method (even if
not annotated)</em>
-<a class="jxr_linenumber" name="L1654" href="#L1654">1654</a>
<em class="jxr_comment">// If setter is "setParent", look for "getParent" or
"isParent"</em>
-<a class="jxr_linenumber" name="L1655" href="#L1655">1655</a>
<strong class="jxr_keyword">var</strong> setterName =
setterMethod.get().getSimpleName();
-<a class="jxr_linenumber" name="L1656" href="#L1656">1656</a>
<strong class="jxr_keyword">if</strong> (setterName.startsWith(<span
class="jxr_string">"set"</span>) && setterName.length() > 3) {
-<a class="jxr_linenumber" name="L1657" href="#L1657">1657</a>
<strong class="jxr_keyword">var</strong> propertyName =
setterName.substring(3);
-<a class="jxr_linenumber" name="L1658" href="#L1658">1658</a>
<strong class="jxr_keyword">var</strong> getterName1 = <span
class="jxr_string">"get"</span> + propertyName;
-<a class="jxr_linenumber" name="L1659" href="#L1659">1659</a>
<strong class="jxr_keyword">var</strong> getterName2 = <span
class="jxr_string">"is"</span> + propertyName;
-<a class="jxr_linenumber" name="L1660" href="#L1660">1660</a>
-<a class="jxr_linenumber" name="L1661" href="#L1661">1661</a>
<strong class="jxr_keyword">var</strong> getter = getAllMethods()
-<a class="jxr_linenumber" name="L1662" href="#L1662">1662</a>
.stream()
-<a class="jxr_linenumber" name="L1663" href="#L1663">1663</a>
.filter(x -> !x.isStatic() && x.hasNumParameters(0)
&&
-<a class="jxr_linenumber" name="L1664" href="#L1664">1664</a>
(x.hasName(getterName1) || x.hasName(getterName2))
&&
-<a class="jxr_linenumber" name="L1665" href="#L1665">1665</a>
!x.getReturnType().is(Void.TYPE))
-<a class="jxr_linenumber" name="L1666" href="#L1666">1666</a>
.findFirst();
-<a class="jxr_linenumber" name="L1667" href="#L1667">1667</a>
-<a class="jxr_linenumber" name="L1668" href="#L1668">1668</a>
<strong class="jxr_keyword">if</strong> (getter.isPresent()) {
-<a class="jxr_linenumber" name="L1669" href="#L1669">1669</a>
builder.getter(getter.get().accessible());
-<a class="jxr_linenumber" name="L1670" href="#L1670">1670</a>
} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L1671" href="#L1671">1671</a>
<em class="jxr_comment">// Try to find a field with the
property name (lowercase first letter)</em>
-<a class="jxr_linenumber" name="L1672" href="#L1672">1672</a>
<strong class="jxr_keyword">var</strong> fieldName =
Character.toLowerCase(propertyName.charAt(0)) + propertyName.substring(1);
-<a class="jxr_linenumber" name="L1673" href="#L1673">1673</a>
<strong class="jxr_keyword">var</strong> field = getAllFields()
-<a class="jxr_linenumber" name="L1674" href="#L1674">1674</a>
.stream()
-<a class="jxr_linenumber" name="L1675" href="#L1675">1675</a>
.filter(x -> !x.isStatic() &&
x.hasName(fieldName))
-<a class="jxr_linenumber" name="L1676" href="#L1676">1676</a>
.findFirst();
-<a class="jxr_linenumber" name="L1677" href="#L1677">1677</a>
-<a class="jxr_linenumber" name="L1678" href="#L1678">1678</a>
<strong class="jxr_keyword">if</strong> (field.isPresent()) {
-<a class="jxr_linenumber" name="L1679" href="#L1679">1679</a>
<strong class="jxr_keyword">var</strong> f =
field.get().accessible();
-<a class="jxr_linenumber" name="L1680" href="#L1680">1680</a>
builder.getter(obj -> f.get(obj));
-<a class="jxr_linenumber" name="L1681" href="#L1681">1681</a>
}
-<a class="jxr_linenumber" name="L1682" href="#L1682">1682</a>
}
-<a class="jxr_linenumber" name="L1683" href="#L1683">1683</a>
}
-<a class="jxr_linenumber" name="L1684" href="#L1684">1684</a> }
-<a class="jxr_linenumber" name="L1685" href="#L1685">1685</a>
-<a class="jxr_linenumber" name="L1686" href="#L1686">1686</a> <em
class="jxr_comment">// Look for getter method (0 parameters, non-void return)
with @ParentProperty</em>
-<a class="jxr_linenumber" name="L1687" href="#L1687">1687</a> <strong
class="jxr_keyword">var</strong> getterMethod = getAllMethods()
-<a class="jxr_linenumber" name="L1688" href="#L1688">1688</a>
.stream()
-<a class="jxr_linenumber" name="L1689" href="#L1689">1689</a>
.filter(x -> ap.has(ParentProperty.<strong
class="jxr_keyword">class</strong>, x) && x.hasNumParameters(0)
&& !x.getReturnType().is(Void.TYPE))
-<a class="jxr_linenumber" name="L1690" href="#L1690">1690</a>
.findFirst();
-<a class="jxr_linenumber" name="L1691" href="#L1691">1691</a>
-<a class="jxr_linenumber" name="L1692" href="#L1692">1692</a> <strong
class="jxr_keyword">if</strong> (getterMethod.isPresent()) {
-<a class="jxr_linenumber" name="L1693" href="#L1693">1693</a>
builder.getter(getterMethod.get().accessible());
-<a class="jxr_linenumber" name="L1694" href="#L1694">1694</a> }
-<a class="jxr_linenumber" name="L1695" href="#L1695">1695</a>
-<a class="jxr_linenumber" name="L1696" href="#L1696">1696</a> <em
class="jxr_comment">// Return null if neither setter nor getter was found</em>
-<a class="jxr_linenumber" name="L1697" href="#L1697">1697</a> <strong
class="jxr_keyword">if</strong> (setterMethod.isEmpty() &&
getterMethod.isEmpty())
-<a class="jxr_linenumber" name="L1698" href="#L1698">1698</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1699" href="#L1699">1699</a>
-<a class="jxr_linenumber" name="L1700" href="#L1700">1700</a> <strong
class="jxr_keyword">return</strong> builder.build();
-<a class="jxr_linenumber" name="L1701" href="#L1701">1701</a> }
-<a class="jxr_linenumber" name="L1702" href="#L1702">1702</a>
-<a class="jxr_linenumber" name="L1703" href="#L1703">1703</a> <strong
class="jxr_keyword">private</strong> <a name="ConstructorInfo"
href="../../../org/apache/juneau/commons/reflect/ConstructorInfo.html#ConstructorInfo">ConstructorInfo</a>
findStringConstructor() {
-<a class="jxr_linenumber" name="L1704" href="#L1704">1704</a>
-<a class="jxr_linenumber" name="L1705" href="#L1705">1705</a> <strong
class="jxr_keyword">if</strong> (is(Object.<strong
class="jxr_keyword">class</strong>) || isAbstract())
-<a class="jxr_linenumber" name="L1706" href="#L1706">1706</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1707" href="#L1707">1707</a>
-<a class="jxr_linenumber" name="L1708" href="#L1708">1708</a> <strong
class="jxr_keyword">if</strong> (implClass.isPresent())
-<a class="jxr_linenumber" name="L1709" href="#L1709">1709</a>
<strong class="jxr_keyword">return</strong>
implClass.get().getPublicConstructor(x -> x.hasParameterTypes(String.<strong
class="jxr_keyword">class</strong>)).orElse(<strong
class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1710" href="#L1710">1710</a>
-<a class="jxr_linenumber" name="L1711" href="#L1711">1711</a> <strong
class="jxr_keyword">if</strong> (isAbstract())
-<a class="jxr_linenumber" name="L1712" href="#L1712">1712</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L1713" href="#L1713">1713</a>
-<a class="jxr_linenumber" name="L1714" href="#L1714">1714</a> <strong
class="jxr_keyword">var</strong> numParams = isMemberClass() &&
isNotStatic() ? 2 : 1;
-<a class="jxr_linenumber" name="L1715" href="#L1715">1715</a> <strong
class="jxr_keyword">return</strong> getPublicConstructors()
-<a class="jxr_linenumber" name="L1716" href="#L1716">1716</a>
.stream()
-<a class="jxr_linenumber" name="L1717" href="#L1717">1717</a>
.filter(x -> x.isPublic() && x.isNotDeprecated() &&
x.hasNumParameters(numParams))
-<a class="jxr_linenumber" name="L1718" href="#L1718">1718</a>
.filter(x -> x.getParameter(numParams == 2 ? 1 : 0).isType(String.<strong
class="jxr_keyword">class</strong>))
-<a class="jxr_linenumber" name="L1719" href="#L1719">1719</a>
.findFirst()
-<a class="jxr_linenumber" name="L1720" href="#L1720">1720</a>
.orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1721" href="#L1721">1721</a> }
-<a class="jxr_linenumber" name="L1722" href="#L1722">1722</a>
-<a class="jxr_linenumber" name="L1723" href="#L1723">1723</a> <em
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1724" href="#L1724">1724</a> <em
class="jxr_javadoccomment"> * Returns the {@link ObjectSwap} where the
specified class is the same/subclass of the normal class of one of the</em>
-<a class="jxr_linenumber" name="L1725" href="#L1725">1725</a> <em
class="jxr_javadoccomment"> * child POJO swaps associated with this
class.</em>
-<a class="jxr_linenumber" name="L1726" href="#L1726">1726</a> <em
class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L1727" href="#L1727">1727</a> <em
class="jxr_javadoccomment"> * @param normalClass The normal class being
resolved.</em>
-<a class="jxr_linenumber" name="L1728" href="#L1728">1728</a> <em
class="jxr_javadoccomment"> * @return The resolved {@link ObjectSwap} or
<jk>null</jk> if none were found.</em>
-<a class="jxr_linenumber" name="L1729" href="#L1729">1729</a> <em
class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L1730" href="#L1730">1730</a> <strong
class="jxr_keyword">protected</strong> ObjectSwap<?,?>
getChildObjectSwapForSwap(Class<?> normalClass) {
-<a class="jxr_linenumber" name="L1731" href="#L1731">1731</a> <strong
class="jxr_keyword">return</strong> childSwapMap.get(normalClass);
-<a class="jxr_linenumber" name="L1732" href="#L1732">1732</a> }
-<a class="jxr_linenumber" name="L1733" href="#L1733">1733</a>
-<a class="jxr_linenumber" name="L1734" href="#L1734">1734</a> <em
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1735" href="#L1735">1735</a> <em
class="jxr_javadoccomment"> * Returns the {@link ObjectSwap} where the
specified class is the same/subclass of the swap class of one of the child</em>
-<a class="jxr_linenumber" name="L1736" href="#L1736">1736</a> <em
class="jxr_javadoccomment"> * POJO swaps associated with this class.</em>
-<a class="jxr_linenumber" name="L1737" href="#L1737">1737</a> <em
class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L1738" href="#L1738">1738</a> <em
class="jxr_javadoccomment"> * @param swapClass The swap class being
resolved.</em>
-<a class="jxr_linenumber" name="L1739" href="#L1739">1739</a> <em
class="jxr_javadoccomment"> * @return The resolved {@link ObjectSwap} or
<jk>null</jk> if none were found.</em>
-<a class="jxr_linenumber" name="L1740" href="#L1740">1740</a> <em
class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L1741" href="#L1741">1741</a> <strong
class="jxr_keyword">protected</strong> ObjectSwap<?,?>
getChildObjectSwapForUnswap(Class<?> swapClass) {
-<a class="jxr_linenumber" name="L1742" href="#L1742">1742</a> <strong
class="jxr_keyword">return</strong> childUnswapMap.get(swapClass);
-<a class="jxr_linenumber" name="L1743" href="#L1743">1743</a> }
-<a class="jxr_linenumber" name="L1744" href="#L1744">1744</a>
-<a class="jxr_linenumber" name="L1745" href="#L1745">1745</a> <em
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1746" href="#L1746">1746</a> <em
class="jxr_javadoccomment"> * Returns <jk>true</jk> if this class
or any child classes has a {@link ObjectSwap} associated with it.</em>
-<a class="jxr_linenumber" name="L1747" href="#L1747">1747</a> <em
class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L1748" href="#L1748">1748</a> <em
class="jxr_javadoccomment"> * <p></em>
-<a class="jxr_linenumber" name="L1749" href="#L1749">1749</a> <em
class="jxr_javadoccomment"> * Used when transforming bean properties to
prevent having to look up transforms if we know for certain that no</em>
-<a class="jxr_linenumber" name="L1750" href="#L1750">1750</a> <em
class="jxr_javadoccomment"> * transforms are associated with a bean
property.</em>
-<a class="jxr_linenumber" name="L1751" href="#L1751">1751</a> <em
class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L1752" href="#L1752">1752</a> <em
class="jxr_javadoccomment"> * @return <jk>true</jk> if this class
or any child classes has a {@link ObjectSwap} associated with it.</em>
-<a class="jxr_linenumber" name="L1753" href="#L1753">1753</a> <em
class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L1754" href="#L1754">1754</a> <strong
class="jxr_keyword">protected</strong> <strong
class="jxr_keyword">boolean</strong> hasChildSwaps() {
-<a class="jxr_linenumber" name="L1755" href="#L1755">1755</a> <strong
class="jxr_keyword">return</strong> ! childSwaps.get().isEmpty();
-<a class="jxr_linenumber" name="L1756" href="#L1756">1756</a> }
-<a class="jxr_linenumber" name="L1757" href="#L1757">1757</a>
-<a class="jxr_linenumber" name="L1758" href="#L1758">1758</a> <em
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1759" href="#L1759">1759</a> <em
class="jxr_javadoccomment"> * Appends this object as a readable string to the
specified string builder.</em>
-<a class="jxr_linenumber" name="L1760" href="#L1760">1760</a> <em
class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L1761" href="#L1761">1761</a> <em
class="jxr_javadoccomment"> * @param sb The string builder to append this
object to.</em>
-<a class="jxr_linenumber" name="L1762" href="#L1762">1762</a> <em
class="jxr_javadoccomment"> * @param simple Print simple class names only (no
package).</em>
-<a class="jxr_linenumber" name="L1763" href="#L1763">1763</a> <em
class="jxr_javadoccomment"> * @return The passed-in string builder.</em>
-<a class="jxr_linenumber" name="L1764" href="#L1764">1764</a> <em
class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L1765" href="#L1765">1765</a> <strong
class="jxr_keyword">protected</strong> StringBuilder toString(StringBuilder sb,
<strong class="jxr_keyword">boolean</strong> simple) {
-<a class="jxr_linenumber" name="L1766" href="#L1766">1766</a> <strong
class="jxr_keyword">var</strong> n = <strong
class="jxr_keyword">inner</strong>().getName();
-<a class="jxr_linenumber" name="L1767" href="#L1767">1767</a> <strong
class="jxr_keyword">if</strong> (simple) {
-<a class="jxr_linenumber" name="L1768" href="#L1768">1768</a>
<strong class="jxr_keyword">var</strong> i = n.lastIndexOf('.');
-<a class="jxr_linenumber" name="L1769" href="#L1769">1769</a>
n = n.substring(i == -1 ? 0 : i + 1).replace('$', '.');
-<a class="jxr_linenumber" name="L1770" href="#L1770">1770</a> }
-<a class="jxr_linenumber" name="L1771" href="#L1771">1771</a> <strong
class="jxr_keyword">if</strong> (cat.is(ARRAY))
-<a class="jxr_linenumber" name="L1772" href="#L1772">1772</a>
<strong class="jxr_keyword">return</strong> elementType.get().toString(sb,
simple).append('[').append(']');
-<a class="jxr_linenumber" name="L1773" href="#L1773">1773</a> <strong
class="jxr_keyword">if</strong> (cat.is(BEANMAP))
-<a class="jxr_linenumber" name="L1774" href="#L1774">1774</a>
<strong class="jxr_keyword">return</strong> sb.append(cn(BeanMap.<strong
class="jxr_keyword">class</strong>)).append('<').append(n).append('>');
-<a class="jxr_linenumber" name="L1775" href="#L1775">1775</a> <strong
class="jxr_keyword">if</strong> (cat.is(MAP)) {
-<a class="jxr_linenumber" name="L1776" href="#L1776">1776</a>
<strong class="jxr_keyword">var</strong> kvTypes = keyValueTypes.get();
-<a class="jxr_linenumber" name="L1777" href="#L1777">1777</a>
<strong class="jxr_keyword">var</strong> kt = kvTypes.getA();
-<a class="jxr_linenumber" name="L1778" href="#L1778">1778</a>
<strong class="jxr_keyword">var</strong> vt = kvTypes.getB();
-<a class="jxr_linenumber" name="L1779" href="#L1779">1779</a>
<strong class="jxr_keyword">if</strong> (kt != <strong
class="jxr_keyword">null</strong> && vt != <strong
class="jxr_keyword">null</strong> && kt.isObject() &&
vt.isObject())
-<a class="jxr_linenumber" name="L1780" href="#L1780">1780</a>
<strong class="jxr_keyword">return</strong> sb.append(n);
-<a class="jxr_linenumber" name="L1781" href="#L1781">1781</a>
<strong class="jxr_keyword">return</strong>
sb.append(n).append('<').append(kt == <strong
class="jxr_keyword">null</strong> ? <span class="jxr_string">"?"</span> :
kt.toString(simple)).append(',').append(vt == <strong
class="jxr_keyword">null</strong> ? <span class="jxr_string">"?"</span> :
vt.toString(simple)).append('>');
-<a class="jxr_linenumber" name="L1782" href="#L1782">1782</a> }
-<a class="jxr_linenumber" name="L1783" href="#L1783">1783</a> <strong
class="jxr_keyword">if</strong> (cat.is(COLLECTION) || is(Optional.<strong
class="jxr_keyword">class</strong>)) {
-<a class="jxr_linenumber" name="L1784" href="#L1784">1784</a>
<strong class="jxr_keyword">var</strong> et = elementType.get();
-<a class="jxr_linenumber" name="L1785" href="#L1785">1785</a>
<strong class="jxr_keyword">return</strong> sb.append(n).append(et != <strong
class="jxr_keyword">null</strong> && et.isObject() ? <span
class="jxr_string">""</span> : <span class="jxr_string">"<"</span> + (et ==
<strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"?"</span>
: et.toString(simple)) + <span class="jxr_string">">"</span>);
-<a class="jxr_linenumber" name="L1786" href="#L1786">1786</a> }
-<a class="jxr_linenumber" name="L1787" href="#L1787">1787</a> <strong
class="jxr_keyword">return</strong> sb.append(n);
-<a class="jxr_linenumber" name="L1788" href="#L1788">1788</a> }
-<a class="jxr_linenumber" name="L1789" href="#L1789">1789</a>
-<a class="jxr_linenumber" name="L1790" href="#L1790">1790</a> <em
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1791" href="#L1791">1791</a> <em
class="jxr_javadoccomment"> * Causes thread to wait until constructor has
exited.</em>
-<a class="jxr_linenumber" name="L1792" href="#L1792">1792</a> <em
class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L1793" href="#L1793">1793</a> <strong
class="jxr_keyword">void</strong> waitForInit() {
-<a class="jxr_linenumber" name="L1794" href="#L1794">1794</a> <strong
class="jxr_keyword">try</strong> (<strong class="jxr_keyword">var</strong> x =
lock.read()) {}
-<a class="jxr_linenumber" name="L1795" href="#L1795">1795</a> }
-<a class="jxr_linenumber" name="L1796" href="#L1796">1796</a> }
+<a class="jxr_linenumber" name="L1339" href="#L1339">1339</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">new</strong> BeanMetaValue<>(<strong
class="jxr_keyword">null</strong>, <span class="jxr_string">"Known non-bean
type"</span>);
+<a class="jxr_linenumber" name="L1340" href="#L1340">1340</a> <strong
class="jxr_keyword">var</strong> result = BeanMeta.create(<strong
class="jxr_keyword">this</strong>, beanFilter.get(), <strong
class="jxr_keyword">null</strong>, implClass.map(x ->
x.getPublicConstructor(x2 -> x2.hasNumParameters(0)).orElse(<strong
class="jxr_keyword">null</strong>)).orElse(<strong
class="jxr_keyword">null</strong>));
+<a class="jxr_linenumber" name="L1341" href="#L1341">1341</a> <strong
class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong>
BeanMetaValue<>(result.getA(), result.getB());
+<a class="jxr_linenumber" name="L1342" href="#L1342">1342</a> }
+<a class="jxr_linenumber" name="L1343" href="#L1343">1343</a>
+<a class="jxr_linenumber" name="L1344" href="#L1344">1344</a> <strong
class="jxr_keyword">private</strong> KeyValueTypes findKeyValueTypes() {
+<a class="jxr_linenumber" name="L1345" href="#L1345">1345</a> <strong
class="jxr_keyword">if</strong> (cat.is(MAP) && ! cat.is(BEANMAP)) {
+<a class="jxr_linenumber" name="L1346" href="#L1346">1346</a>
<em class="jxr_comment">// If this is a MAP, see if it's parameterized (e.g.
AddressBook extends HashMap<String,Person>)</em>
+<a class="jxr_linenumber" name="L1347" href="#L1347">1347</a>
<strong class="jxr_keyword">var</strong> parameters =
beanContext.findParameters(<strong class="jxr_keyword">inner</strong>(),
<strong class="jxr_keyword">inner</strong>());
+<a class="jxr_linenumber" name="L1348" href="#L1348">1348</a>
<strong class="jxr_keyword">if</strong> (nn(parameters) &&
parameters.length == 2) {
+<a class="jxr_linenumber" name="L1349" href="#L1349">1349</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">new</strong> KeyValueTypes(parameters[0], parameters[1]);
+<a class="jxr_linenumber" name="L1350" href="#L1350">1350</a>
}
+<a class="jxr_linenumber" name="L1351" href="#L1351">1351</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">new</strong>
KeyValueTypes(beanContext.getClassMeta(Object.<strong
class="jxr_keyword">class</strong>), beanContext.getClassMeta(Object.<strong
class="jxr_keyword">class</strong>));
+<a class="jxr_linenumber" name="L1352" href="#L1352">1352</a> }
+<a class="jxr_linenumber" name="L1353" href="#L1353">1353</a> <strong
class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong>
KeyValueTypes(<strong class="jxr_keyword">null</strong>, <strong
class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1354" href="#L1354">1354</a> }
+<a class="jxr_linenumber" name="L1355" href="#L1355">1355</a>
+<a class="jxr_linenumber" name="L1356" href="#L1356">1356</a> <strong
class="jxr_keyword">private</strong> ClassMeta<?> findElementType() {
+<a class="jxr_linenumber" name="L1357" href="#L1357">1357</a> <strong
class="jxr_keyword">if</strong> (beanContext == <strong
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L1358" href="#L1358">1358</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1359" href="#L1359">1359</a> <strong
class="jxr_keyword">if</strong> (cat.is(ARRAY)) {
+<a class="jxr_linenumber" name="L1360" href="#L1360">1360</a>
<strong class="jxr_keyword">return</strong> beanContext.getClassMeta(<strong
class="jxr_keyword">inner</strong>().getComponentType(), false);
+<a class="jxr_linenumber" name="L1361" href="#L1361">1361</a> }
<strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (cat.is(COLLECTION) || is(Optional.<strong
class="jxr_keyword">class</strong>)) {
+<a class="jxr_linenumber" name="L1362" href="#L1362">1362</a>
<em class="jxr_comment">// If this is a COLLECTION, see if it's parameterized
(e.g. AddressBook extends LinkedList<Person>)</em>
+<a class="jxr_linenumber" name="L1363" href="#L1363">1363</a>
<strong class="jxr_keyword">var</strong> parameters =
beanContext.findParameters(<strong class="jxr_keyword">inner</strong>(),
<strong class="jxr_keyword">inner</strong>());
+<a class="jxr_linenumber" name="L1364" href="#L1364">1364</a>
<strong class="jxr_keyword">if</strong> (nn(parameters) &&
parameters.length == 1) {
+<a class="jxr_linenumber" name="L1365" href="#L1365">1365</a>
<strong class="jxr_keyword">return</strong> parameters[0];
+<a class="jxr_linenumber" name="L1366" href="#L1366">1366</a>
}
+<a class="jxr_linenumber" name="L1367" href="#L1367">1367</a>
<strong class="jxr_keyword">return</strong>
beanContext.getClassMeta(Object.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L1368" href="#L1368">1368</a> }
+<a class="jxr_linenumber" name="L1369" href="#L1369">1369</a> <strong
class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1370" href="#L1370">1370</a> }
+<a class="jxr_linenumber" name="L1371" href="#L1371">1371</a>
+<a class="jxr_linenumber" name="L1372" href="#L1372">1372</a>
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L1373" href="#L1373">1373</a> <strong
class="jxr_keyword">private</strong> BuilderSwap<T,?> findBuilderSwap() {
+<a class="jxr_linenumber" name="L1374" href="#L1374">1374</a> <strong
class="jxr_keyword">var</strong> bc = beanContext;
+<a class="jxr_linenumber" name="L1375" href="#L1375">1375</a> <strong
class="jxr_keyword">if</strong> (bc == <strong
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L1376" href="#L1376">1376</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1377" href="#L1377">1377</a> <strong
class="jxr_keyword">return</strong>
(BuilderSwap<T,?>)BuilderSwap.findSwapFromObjectClass(bc, <strong
class="jxr_keyword">inner</strong>(), bc.getBeanConstructorVisibility(),
bc.getBeanMethodVisibility());
+<a class="jxr_linenumber" name="L1378" href="#L1378">1378</a> }
+<a class="jxr_linenumber" name="L1379" href="#L1379">1379</a>
+<a class="jxr_linenumber" name="L1380" href="#L1380">1380</a>
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L1381" href="#L1381">1381</a> <strong
class="jxr_keyword">private</strong> List<ObjectSwap<T,?>>
findSwaps() {
+<a class="jxr_linenumber" name="L1382" href="#L1382">1382</a> <strong
class="jxr_keyword">if</strong> (beanContext == <strong
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L1383" href="#L1383">1383</a>
<strong class="jxr_keyword">return</strong> l();
+<a class="jxr_linenumber" name="L1384" href="#L1384">1384</a>
+<a class="jxr_linenumber" name="L1385" href="#L1385">1385</a> <strong
class="jxr_keyword">var</strong> list = <strong
class="jxr_keyword">new</strong> ArrayList<ObjectSwap<T,?>>();
+<a class="jxr_linenumber" name="L1386" href="#L1386">1386</a> <strong
class="jxr_keyword">var</strong> swapArray = beanContext.getSwaps();
+<a class="jxr_linenumber" name="L1387" href="#L1387">1387</a> <strong
class="jxr_keyword">if</strong> (swapArray != <strong
class="jxr_keyword">null</strong> && swapArray.length > 0) {
+<a class="jxr_linenumber" name="L1388" href="#L1388">1388</a>
<strong class="jxr_keyword">var</strong> innerClass = <strong
class="jxr_keyword">inner</strong>();
+<a class="jxr_linenumber" name="L1389" href="#L1389">1389</a>
<strong class="jxr_keyword">for</strong> (<strong
class="jxr_keyword">var</strong> f : swapArray)
+<a class="jxr_linenumber" name="L1390" href="#L1390">1390</a>
<strong class="jxr_keyword">if</strong>
(f.getNormalClass().isParentOf(innerClass))
+<a class="jxr_linenumber" name="L1391" href="#L1391">1391</a>
list.add((ObjectSwap<T,?>)f);
+<a class="jxr_linenumber" name="L1392" href="#L1392">1392</a> }
+<a class="jxr_linenumber" name="L1393" href="#L1393">1393</a>
+<a class="jxr_linenumber" name="L1394" href="#L1394">1394</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
+<a class="jxr_linenumber" name="L1395" href="#L1395">1395</a>
ap.find(Swap.<strong class="jxr_keyword">class</strong>, <strong
class="jxr_keyword">this</strong>).stream().map(AnnotationInfo::<strong
class="jxr_keyword">inner</strong>).forEach(x -> list.add(createSwap(x)));
+<a class="jxr_linenumber" name="L1396" href="#L1396">1396</a> <strong
class="jxr_keyword">var</strong> ds = DefaultSwaps.find(<strong
class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="L1397" href="#L1397">1397</a> <strong
class="jxr_keyword">if</strong> (ds == <strong
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L1398" href="#L1398">1398</a>
ds = AutoObjectSwap.find(beanContext, <strong
class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="L1399" href="#L1399">1399</a> <strong
class="jxr_keyword">if</strong> (ds == <strong
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L1400" href="#L1400">1400</a>
ds = AutoNumberSwap.find(beanContext, <strong
class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="L1401" href="#L1401">1401</a> <strong
class="jxr_keyword">if</strong> (ds == <strong
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L1402" href="#L1402">1402</a>
ds = AutoMapSwap.find(beanContext, <strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="L1403" href="#L1403">1403</a> <strong
class="jxr_keyword">if</strong> (ds == <strong
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L1404" href="#L1404">1404</a>
ds = AutoListSwap.find(beanContext, <strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="L1405" href="#L1405">1405</a>
+<a class="jxr_linenumber" name="L1406" href="#L1406">1406</a> <strong
class="jxr_keyword">if</strong> (nn(ds))
+<a class="jxr_linenumber" name="L1407" href="#L1407">1407</a>
list.add((ObjectSwap<T,?>)ds);
+<a class="jxr_linenumber" name="L1408" href="#L1408">1408</a>
+<a class="jxr_linenumber" name="L1409" href="#L1409">1409</a> <strong
class="jxr_keyword">return</strong> u(list);
+<a class="jxr_linenumber" name="L1410" href="#L1410">1410</a> }
+<a class="jxr_linenumber" name="L1411" href="#L1411">1411</a>
+<a class="jxr_linenumber" name="L1412" href="#L1412">1412</a> <strong
class="jxr_keyword">private</strong> List<ObjectSwap<?,?>>
findChildSwaps() {
+<a class="jxr_linenumber" name="L1413" href="#L1413">1413</a> <strong
class="jxr_keyword">if</strong> (beanContext == <strong
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L1414" href="#L1414">1414</a>
<strong class="jxr_keyword">return</strong> l();
+<a class="jxr_linenumber" name="L1415" href="#L1415">1415</a> <strong
class="jxr_keyword">var</strong> swapArray = beanContext.getSwaps();
+<a class="jxr_linenumber" name="L1416" href="#L1416">1416</a> <strong
class="jxr_keyword">if</strong> (swapArray == <strong
class="jxr_keyword">null</strong> || swapArray.length == 0)
+<a class="jxr_linenumber" name="L1417" href="#L1417">1417</a>
<strong class="jxr_keyword">return</strong> l();
+<a class="jxr_linenumber" name="L1418" href="#L1418">1418</a> <strong
class="jxr_keyword">var</strong> list = <strong
class="jxr_keyword">new</strong> ArrayList<ObjectSwap<?,?>>();
+<a class="jxr_linenumber" name="L1419" href="#L1419">1419</a> <strong
class="jxr_keyword">var</strong> innerClass = <strong
class="jxr_keyword">inner</strong>();
+<a class="jxr_linenumber" name="L1420" href="#L1420">1420</a> <strong
class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> f :
swapArray)
+<a class="jxr_linenumber" name="L1421" href="#L1421">1421</a>
<strong class="jxr_keyword">if</strong>
(f.getNormalClass().isChildOf(innerClass))
+<a class="jxr_linenumber" name="L1422" href="#L1422">1422</a>
list.add(f);
+<a class="jxr_linenumber" name="L1423" href="#L1423">1423</a> <strong
class="jxr_keyword">return</strong> u(list);
+<a class="jxr_linenumber" name="L1424" href="#L1424">1424</a> }
+<a class="jxr_linenumber" name="L1425" href="#L1425">1425</a>
+<a class="jxr_linenumber" name="L1426" href="#L1426">1426</a> <strong
class="jxr_keyword">private</strong> BidiMap<Object,String>
findEnumValues() {
+<a class="jxr_linenumber" name="L1427" href="#L1427">1427</a> <strong
class="jxr_keyword">if</strong> (! isEnum())
+<a class="jxr_linenumber" name="L1428" href="#L1428">1428</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1429" href="#L1429">1429</a>
+<a class="jxr_linenumber" name="L1430" href="#L1430">1430</a> <strong
class="jxr_keyword">var</strong> bc = beanContext;
+<a class="jxr_linenumber" name="L1431" href="#L1431">1431</a> <strong
class="jxr_keyword">var</strong> useEnumNames = nn(bc) &&
bc.isUseEnumNames();
+<a class="jxr_linenumber" name="L1432" href="#L1432">1432</a>
+<a class="jxr_linenumber" name="L1433" href="#L1433">1433</a> <strong
class="jxr_keyword">var</strong> m =
BidiMap.<Object,String>create().unmodifiable();
+<a class="jxr_linenumber" name="L1434" href="#L1434">1434</a> <strong
class="jxr_keyword">var</strong> c = <strong
class="jxr_keyword">inner</strong>().asSubclass(Enum.<strong
class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L1435" href="#L1435">1435</a>
stream(c.getEnumConstants()).forEach(x -> m.add(x, useEnumNames ? x.name() :
x.toString()));
+<a class="jxr_linenumber" name="L1436" href="#L1436">1436</a> <strong
class="jxr_keyword">return</strong> m.build();
+<a class="jxr_linenumber" name="L1437" href="#L1437">1437</a> }
+<a class="jxr_linenumber" name="L1438" href="#L1438">1438</a>
+<a class="jxr_linenumber" name="L1439" href="#L1439">1439</a>
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L1440" href="#L1440">1440</a> <strong
class="jxr_keyword">private</strong> String findExample() {
+<a class="jxr_linenumber" name="L1441" href="#L1441">1441</a>
+<a class="jxr_linenumber" name="L1442" href="#L1442">1442</a> <strong
class="jxr_keyword">var</strong> example = beanFilter.map(x ->
x.getExample()).orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1443" href="#L1443">1443</a>
+<a class="jxr_linenumber" name="L1444" href="#L1444">1444</a> <strong
class="jxr_keyword">if</strong> (example == <strong
class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L1445" href="#L1445">1445</a>
example = marshalledFilter.map(x -> x.getExample()).orElse(<strong
class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1446" href="#L1446">1446</a>
+<a class="jxr_linenumber" name="L1447" href="#L1447">1447</a> <strong
class="jxr_keyword">if</strong> (example == <strong
class="jxr_keyword">null</strong> && nn(beanContext))
+<a class="jxr_linenumber" name="L1448" href="#L1448">1448</a>
example = beanContext.getAnnotationProvider().find(Example.<strong
class="jxr_keyword">class</strong>, <strong
class="jxr_keyword">this</strong>).stream().map(x -> x.<strong
class="jxr_keyword">inner</strong>().value()).filter(Utils::isNotEmpty).findFirst().orElse(<strong
class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1449" href="#L1449">1449</a>
+<a class="jxr_linenumber" name="L1450" href="#L1450">1450</a> <strong
class="jxr_keyword">if</strong> (example == <strong
class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1451" href="#L1451">1451</a>
<strong class="jxr_keyword">if</strong> (isAny(<strong
class="jxr_keyword">boolean</strong>.<strong
class="jxr_keyword">class</strong>, Boolean.<strong
class="jxr_keyword">class</strong>)) {
+<a class="jxr_linenumber" name="L1452" href="#L1452">1452</a>
example = <span class="jxr_string">"true"</span>;
+<a class="jxr_linenumber" name="L1453" href="#L1453">1453</a>
} <strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (isAny(<strong
class="jxr_keyword">char</strong>.<strong class="jxr_keyword">class</strong>,
Character.<strong class="jxr_keyword">class</strong>)) {
+<a class="jxr_linenumber" name="L1454" href="#L1454">1454</a>
example = <span class="jxr_string">"a"</span>;
+<a class="jxr_linenumber" name="L1455" href="#L1455">1455</a>
} <strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (cat.is(CHARSEQ)) {
+<a class="jxr_linenumber" name="L1456" href="#L1456">1456</a>
example = <span class="jxr_string">"foo"</span>;
+<a class="jxr_linenumber" name="L1457" href="#L1457">1457</a>
} <strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (cat.is(ENUM)) {
+<a class="jxr_linenumber" name="L1458" href="#L1458">1458</a>
Iterator<? <strong class="jxr_keyword">extends</strong>
Enum<?>> i = EnumSet.allOf(<strong
class="jxr_keyword">inner</strong>().asSubclass(Enum.<strong
class="jxr_keyword">class</strong>)).iterator();
+<a class="jxr_linenumber" name="L1459" href="#L1459">1459</a>
example = i.hasNext() ? (beanContext.isUseEnumNames() ? i.next().name()
: i.next().toString()) : <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1460" href="#L1460">1460</a>
} <strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (isAny(<strong
class="jxr_keyword">float</strong>.<strong class="jxr_keyword">class</strong>,
Float.<strong class="jxr_keyword">class</strong>, <strong
class="jxr_keyword">double</strong>.<strong class="jxr_keyword">class</strong>,
Double.<strong class="jxr_keyword">class</strong>)) {
+<a class="jxr_linenumber" name="L1461" href="#L1461">1461</a>
example = <span class="jxr_string">"1.0"</span>;
+<a class="jxr_linenumber" name="L1462" href="#L1462">1462</a>
} <strong class="jxr_keyword">else</strong> <strong
class="jxr_keyword">if</strong> (isAny(<strong
class="jxr_keyword">short</strong>.<strong class="jxr_keyword">class</strong>,
Short.<strong class="jxr_keyword">class</strong>, <strong
class="jxr_keyword">int</strong>.<strong class="jxr_keyword">class</strong>,
Integer.<strong class="jxr_keyword">class</strong>, <strong
class="jxr_keyword">long</strong>.<strong class="jxr_k [...]
+<a class="jxr_linenumber" name="L1463" href="#L1463">1463</a>
example = <span class="jxr_string">"1"</span>;
+<a class="jxr_linenumber" name="L1464" href="#L1464">1464</a>
}
+<a class="jxr_linenumber" name="L1465" href="#L1465">1465</a> }
+<a class="jxr_linenumber" name="L1466" href="#L1466">1466</a>
+<a class="jxr_linenumber" name="L1467" href="#L1467">1467</a> <strong
class="jxr_keyword">return</strong> example;
+<a class="jxr_linenumber" name="L1468" href="#L1468">1468</a> }
+<a class="jxr_linenumber" name="L1469" href="#L1469">1469</a>
+<a class="jxr_linenumber" name="L1470" href="#L1470">1470</a> <strong
class="jxr_keyword">private</strong> <a name="FieldInfo"
href="../../../org/apache/juneau/commons/reflect/FieldInfo.html#FieldInfo">FieldInfo</a>
findExampleField() {
+<a class="jxr_linenumber" name="L1471" href="#L1471">1471</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
+<a class="jxr_linenumber" name="L1472" href="#L1472">1472</a>
+<a class="jxr_linenumber" name="L1473" href="#L1473">1473</a> <strong
class="jxr_keyword">return</strong> getDeclaredFields()
+<a class="jxr_linenumber" name="L1474" href="#L1474">1474</a>
.stream()
+<a class="jxr_linenumber" name="L1475" href="#L1475">1475</a>
.filter(x -> x.isStatic() && isParentOf(x.getFieldType()) &&
ap.has(Example.<strong class="jxr_keyword">class</strong>, x))
+<a class="jxr_linenumber" name="L1476" href="#L1476">1476</a>
.map(x -> x.accessible())
+<a class="jxr_linenumber" name="L1477" href="#L1477">1477</a>
.findFirst()
+<a class="jxr_linenumber" name="L1478" href="#L1478">1478</a>
.orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1479" href="#L1479">1479</a> }
+<a class="jxr_linenumber" name="L1480" href="#L1480">1480</a>
+<a class="jxr_linenumber" name="L1481" href="#L1481">1481</a> <strong
class="jxr_keyword">private</strong> <a name="MethodInfo"
href="../../../org/apache/juneau/commons/reflect/MethodInfo.html#MethodInfo">MethodInfo</a>
findExampleMethod() {
+<a class="jxr_linenumber" name="L1482" href="#L1482">1482</a> <em
class="jxr_comment">// @formatter:off</em>
+<a class="jxr_linenumber" name="L1483" href="#L1483">1483</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
+<a class="jxr_linenumber" name="L1484" href="#L1484">1484</a>
+<a class="jxr_linenumber" name="L1485" href="#L1485">1485</a> <em
class="jxr_comment">// Option 1: Public example() or @Example method.</em>
+<a class="jxr_linenumber" name="L1486" href="#L1486">1486</a> <strong
class="jxr_keyword">var</strong> m = getPublicMethod(
+<a class="jxr_linenumber" name="L1487" href="#L1487">1487</a>
x -> x.isStatic() && x.isNotDeprecated() && (x.hasName(<span
class="jxr_string">"example"</span>) || ap.has(Example.<strong
class="jxr_keyword">class</strong>, x)) &&
x.hasParameterTypesLenient(BeanSession.<strong
class="jxr_keyword">class</strong>)
+<a class="jxr_linenumber" name="L1488" href="#L1488">1488</a> );
+<a class="jxr_linenumber" name="L1489" href="#L1489">1489</a> <strong
class="jxr_keyword">if</strong> (m.isPresent()) <strong
class="jxr_keyword">return</strong> m.get();
+<a class="jxr_linenumber" name="L1490" href="#L1490">1490</a>
+<a class="jxr_linenumber" name="L1491" href="#L1491">1491</a> <em
class="jxr_comment">// Option 2: Non-public @Example method.</em>
+<a class="jxr_linenumber" name="L1492" href="#L1492">1492</a> <strong
class="jxr_keyword">return</strong> getDeclaredMethods()
+<a class="jxr_linenumber" name="L1493" href="#L1493">1493</a>
.stream()
+<a class="jxr_linenumber" name="L1494" href="#L1494">1494</a>
.flatMap(x -> x.getMatchingMethods().stream())
+<a class="jxr_linenumber" name="L1495" href="#L1495">1495</a>
.filter(x -> x.isStatic() && ap.has(Example.<strong
class="jxr_keyword">class</strong>, x))
+<a class="jxr_linenumber" name="L1496" href="#L1496">1496</a>
.map(x -> x.accessible())
+<a class="jxr_linenumber" name="L1497" href="#L1497">1497</a>
.findFirst()
+<a class="jxr_linenumber" name="L1498" href="#L1498">1498</a>
.orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1499" href="#L1499">1499</a> <em
class="jxr_comment">// @formatter:on</em>
+<a class="jxr_linenumber" name="L1500" href="#L1500">1500</a> }
+<a class="jxr_linenumber" name="L1501" href="#L1501">1501</a>
+<a class="jxr_linenumber" name="L1502" href="#L1502">1502</a> <strong
class="jxr_keyword">private</strong> <a name="MethodInfo"
href="../../../org/apache/juneau/commons/reflect/MethodInfo.html#MethodInfo">MethodInfo</a>
findFromStringMethod() {
+<a class="jxr_linenumber" name="L1503" href="#L1503">1503</a> <em
class="jxr_comment">// Find static fromString(String) or equivalent method.</em>
+<a class="jxr_linenumber" name="L1504" href="#L1504">1504</a> <em
class="jxr_comment">// fromString() must be checked before valueOf() so that
Enum classes can create their own</em>
+<a class="jxr_linenumber" name="L1505" href="#L1505">1505</a> <em
class="jxr_comment">// specialized fromString() methods to
override the behavior of Enum.valueOf(String).</em>
+<a class="jxr_linenumber" name="L1506" href="#L1506">1506</a> <em
class="jxr_comment">// valueOf() is used by enums.</em>
+<a class="jxr_linenumber" name="L1507" href="#L1507">1507</a> <em
class="jxr_comment">// parse() is used by the java logging Level class.</em>
+<a class="jxr_linenumber" name="L1508" href="#L1508">1508</a> <em
class="jxr_comment">// forName() is used by Class and Charset</em>
+<a class="jxr_linenumber" name="L1509" href="#L1509">1509</a> <em
class="jxr_comment">// @formatter:off</em>
+<a class="jxr_linenumber" name="L1510" href="#L1510">1510</a> <strong
class="jxr_keyword">var</strong> names = a(<span
class="jxr_string">"fromString"</span>, <span
class="jxr_string">"fromValue"</span>, <span
class="jxr_string">"valueOf"</span>, <span class="jxr_string">"parse"</span>,
<span class="jxr_string">"parseString"</span>, <span
class="jxr_string">"forName"</span>, <span
class="jxr_string">"forString"</span>);
+<a class="jxr_linenumber" name="L1511" href="#L1511">1511</a> <strong
class="jxr_keyword">return</strong> getPublicMethod(
+<a class="jxr_linenumber" name="L1512" href="#L1512">1512</a>
x -> x.isStatic() && x.isNotDeprecated() &&
x.hasReturnType(<strong class="jxr_keyword">this</strong>) &&
x.hasParameterTypes(String.<strong class="jxr_keyword">class</strong>)
&& contains(x.getName(), names)
+<a class="jxr_linenumber" name="L1513" href="#L1513">1513</a>
).orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1514" href="#L1514">1514</a> <em
class="jxr_comment">// @formatter:on</em>
+<a class="jxr_linenumber" name="L1515" href="#L1515">1515</a> }
+<a class="jxr_linenumber" name="L1516" href="#L1516">1516</a>
+<a class="jxr_linenumber" name="L1517" href="#L1517">1517</a>
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L1518" href="#L1518">1518</a> <strong
class="jxr_keyword">private</strong> ClassInfoTyped<? <strong
class="jxr_keyword">extends</strong> T> findImplClass() {
+<a class="jxr_linenumber" name="L1519" href="#L1519">1519</a>
+<a class="jxr_linenumber" name="L1520" href="#L1520">1520</a> <strong
class="jxr_keyword">if</strong> (is(Object.<strong
class="jxr_keyword">class</strong>))
+<a class="jxr_linenumber" name="L1521" href="#L1521">1521</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1522" href="#L1522">1522</a>
+<a class="jxr_linenumber" name="L1523" href="#L1523">1523</a> <strong
class="jxr_keyword">var</strong> v = beanFilter.map(x ->
x.getImplClass()).map(ReflectionUtils::info).orElse(<strong
class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1524" href="#L1524">1524</a>
+<a class="jxr_linenumber" name="L1525" href="#L1525">1525</a> <strong
class="jxr_keyword">if</strong> (v == <strong class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L1526" href="#L1526">1526</a>
v = marshalledFilter.map(x ->
x.getImplClass()).map(ReflectionUtils::info).orElse(<strong
class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1527" href="#L1527">1527</a>
+<a class="jxr_linenumber" name="L1528" href="#L1528">1528</a> <strong
class="jxr_keyword">return</strong> (ClassInfoTyped<? <strong
class="jxr_keyword">extends</strong> T>)v;
+<a class="jxr_linenumber" name="L1529" href="#L1529">1529</a> }
+<a class="jxr_linenumber" name="L1530" href="#L1530">1530</a>
+<a class="jxr_linenumber" name="L1531" href="#L1531">1531</a> <strong
class="jxr_keyword">private</strong> <a name="MarshalledFilter"
href="../../../org/apache/juneau/MarshalledFilter.html#MarshalledFilter">MarshalledFilter</a>
findMarshalledFilter() {
+<a class="jxr_linenumber" name="L1532" href="#L1532">1532</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
+<a class="jxr_linenumber" name="L1533" href="#L1533">1533</a> <strong
class="jxr_keyword">var</strong> l = ap.find(Marshalled.<strong
class="jxr_keyword">class</strong>, <strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="L1534" href="#L1534">1534</a> <strong
class="jxr_keyword">if</strong> (l.isEmpty())
+<a class="jxr_linenumber" name="L1535" href="#L1535">1535</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1536" href="#L1536">1536</a> <strong
class="jxr_keyword">return</strong> MarshalledFilter.create(<strong
class="jxr_keyword">inner</strong>()).applyAnnotations(reverse(l.stream().map(AnnotationInfo::<strong
class="jxr_keyword">inner</strong>).toList())).build();
+<a class="jxr_linenumber" name="L1537" href="#L1537">1537</a> }
+<a class="jxr_linenumber" name="L1538" href="#L1538">1538</a>
+<a class="jxr_linenumber" name="L1539" href="#L1539">1539</a> <strong
class="jxr_keyword">private</strong> Property<T,Object>
findNameProperty() {
+<a class="jxr_linenumber" name="L1540" href="#L1540">1540</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
+<a class="jxr_linenumber" name="L1541" href="#L1541">1541</a>
+<a class="jxr_linenumber" name="L1542" href="#L1542">1542</a> <strong
class="jxr_keyword">var</strong> s = getAllFields()
+<a class="jxr_linenumber" name="L1543" href="#L1543">1543</a>
.stream()
+<a class="jxr_linenumber" name="L1544" href="#L1544">1544</a>
.filter(x -> ap.has(NameProperty.<strong class="jxr_keyword">class</strong>,
x))
+<a class="jxr_linenumber" name="L1545" href="#L1545">1545</a>
.map(x -> x.accessible())
+<a class="jxr_linenumber" name="L1546" href="#L1546">1546</a>
.map(x -> Property.<T,Object>create().field(x).build())
+<a class="jxr_linenumber" name="L1547" href="#L1547">1547</a>
.findFirst();
+<a class="jxr_linenumber" name="L1548" href="#L1548">1548</a>
+<a class="jxr_linenumber" name="L1549" href="#L1549">1549</a> <strong
class="jxr_keyword">if</strong> (s.isPresent()) <strong
class="jxr_keyword">return</strong> s.get();
+<a class="jxr_linenumber" name="L1550" href="#L1550">1550</a>
+<a class="jxr_linenumber" name="L1551" href="#L1551">1551</a> <strong
class="jxr_keyword">var</strong> builder = Property.<T,Object>create();
+<a class="jxr_linenumber" name="L1552" href="#L1552">1552</a>
+<a class="jxr_linenumber" name="L1553" href="#L1553">1553</a> <em
class="jxr_comment">// Look for setter method (1 parameter) with
@NameProperty</em>
+<a class="jxr_linenumber" name="L1554" href="#L1554">1554</a> <strong
class="jxr_keyword">var</strong> setterMethod = getAllMethods()
+<a class="jxr_linenumber" name="L1555" href="#L1555">1555</a>
.stream()
+<a class="jxr_linenumber" name="L1556" href="#L1556">1556</a>
.filter(x -> ap.has(NameProperty.<strong class="jxr_keyword">class</strong>,
x) && x.hasNumParameters(1))
+<a class="jxr_linenumber" name="L1557" href="#L1557">1557</a>
.findFirst();
+<a class="jxr_linenumber" name="L1558" href="#L1558">1558</a>
+<a class="jxr_linenumber" name="L1559" href="#L1559">1559</a> <strong
class="jxr_keyword">if</strong> (setterMethod.isPresent()) {
+<a class="jxr_linenumber" name="L1560" href="#L1560">1560</a>
builder.setter(setterMethod.get().accessible());
+<a class="jxr_linenumber" name="L1561" href="#L1561">1561</a>
+<a class="jxr_linenumber" name="L1562" href="#L1562">1562</a>
<em class="jxr_comment">// Try to find a corresponding getter method (even if
not annotated)</em>
+<a class="jxr_linenumber" name="L1563" href="#L1563">1563</a>
<em class="jxr_comment">// If setter is "setName", look for "getName" or
"isName"</em>
+<a class="jxr_linenumber" name="L1564" href="#L1564">1564</a>
<strong class="jxr_keyword">var</strong> setterName =
setterMethod.get().getSimpleName();
+<a class="jxr_linenumber" name="L1565" href="#L1565">1565</a>
<strong class="jxr_keyword">if</strong> (setterName.startsWith(<span
class="jxr_string">"set"</span>) && setterName.length() > 3) {
+<a class="jxr_linenumber" name="L1566" href="#L1566">1566</a>
<strong class="jxr_keyword">var</strong> propertyName =
setterName.substring(3);
+<a class="jxr_linenumber" name="L1567" href="#L1567">1567</a>
<strong class="jxr_keyword">var</strong> getterName1 = <span
class="jxr_string">"get"</span> + propertyName;
+<a class="jxr_linenumber" name="L1568" href="#L1568">1568</a>
<strong class="jxr_keyword">var</strong> getterName2 = <span
class="jxr_string">"is"</span> + propertyName;
+<a class="jxr_linenumber" name="L1569" href="#L1569">1569</a>
+<a class="jxr_linenumber" name="L1570" href="#L1570">1570</a>
<strong class="jxr_keyword">var</strong> getter = getAllMethods()
+<a class="jxr_linenumber" name="L1571" href="#L1571">1571</a>
.stream()
+<a class="jxr_linenumber" name="L1572" href="#L1572">1572</a>
.filter(x -> !x.isStatic() && x.hasNumParameters(0)
&&
+<a class="jxr_linenumber" name="L1573" href="#L1573">1573</a>
(x.hasName(getterName1) || x.hasName(getterName2))
&&
+<a class="jxr_linenumber" name="L1574" href="#L1574">1574</a>
!x.getReturnType().is(Void.TYPE))
+<a class="jxr_linenumber" name="L1575" href="#L1575">1575</a>
.findFirst();
+<a class="jxr_linenumber" name="L1576" href="#L1576">1576</a>
+<a class="jxr_linenumber" name="L1577" href="#L1577">1577</a>
<strong class="jxr_keyword">if</strong> (getter.isPresent()) {
+<a class="jxr_linenumber" name="L1578" href="#L1578">1578</a>
builder.getter(getter.get().accessible());
+<a class="jxr_linenumber" name="L1579" href="#L1579">1579</a>
} <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L1580" href="#L1580">1580</a>
<em class="jxr_comment">// Try to find a field with the
property name (lowercase first letter)</em>
+<a class="jxr_linenumber" name="L1581" href="#L1581">1581</a>
<strong class="jxr_keyword">var</strong> fieldName =
Character.toLowerCase(propertyName.charAt(0)) + propertyName.substring(1);
+<a class="jxr_linenumber" name="L1582" href="#L1582">1582</a>
<strong class="jxr_keyword">var</strong> field = getAllFields()
+<a class="jxr_linenumber" name="L1583" href="#L1583">1583</a>
.stream()
+<a class="jxr_linenumber" name="L1584" href="#L1584">1584</a>
.filter(x -> !x.isStatic() &&
x.hasName(fieldName))
+<a class="jxr_linenumber" name="L1585" href="#L1585">1585</a>
.findFirst();
+<a class="jxr_linenumber" name="L1586" href="#L1586">1586</a>
+<a class="jxr_linenumber" name="L1587" href="#L1587">1587</a>
<strong class="jxr_keyword">if</strong> (field.isPresent()) {
+<a class="jxr_linenumber" name="L1588" href="#L1588">1588</a>
<strong class="jxr_keyword">var</strong> f =
field.get().accessible();
+<a class="jxr_linenumber" name="L1589" href="#L1589">1589</a>
builder.getter(obj -> f.get(obj));
+<a class="jxr_linenumber" name="L1590" href="#L1590">1590</a>
}
+<a class="jxr_linenumber" name="L1591" href="#L1591">1591</a>
}
+<a class="jxr_linenumber" name="L1592" href="#L1592">1592</a>
}
+<a class="jxr_linenumber" name="L1593" href="#L1593">1593</a> }
+<a class="jxr_linenumber" name="L1594" href="#L1594">1594</a>
+<a class="jxr_linenumber" name="L1595" href="#L1595">1595</a> <em
class="jxr_comment">// Look for getter method (0 parameters, non-void return)
with @NameProperty</em>
+<a class="jxr_linenumber" name="L1596" href="#L1596">1596</a> <strong
class="jxr_keyword">var</strong> getterMethod = getAllMethods()
+<a class="jxr_linenumber" name="L1597" href="#L1597">1597</a>
.stream()
+<a class="jxr_linenumber" name="L1598" href="#L1598">1598</a>
.filter(x -> ap.has(NameProperty.<strong class="jxr_keyword">class</strong>,
x) && x.hasNumParameters(0) && !x.getReturnType().is(Void.TYPE))
+<a class="jxr_linenumber" name="L1599" href="#L1599">1599</a>
.findFirst();
+<a class="jxr_linenumber" name="L1600" href="#L1600">1600</a>
+<a class="jxr_linenumber" name="L1601" href="#L1601">1601</a> <strong
class="jxr_keyword">if</strong> (getterMethod.isPresent()) {
+<a class="jxr_linenumber" name="L1602" href="#L1602">1602</a>
builder.getter(getterMethod.get().accessible());
+<a class="jxr_linenumber" name="L1603" href="#L1603">1603</a> }
+<a class="jxr_linenumber" name="L1604" href="#L1604">1604</a>
+<a class="jxr_linenumber" name="L1605" href="#L1605">1605</a> <em
class="jxr_comment">// Return null if neither setter nor getter was found</em>
+<a class="jxr_linenumber" name="L1606" href="#L1606">1606</a> <strong
class="jxr_keyword">if</strong> (setterMethod.isEmpty() &&
getterMethod.isEmpty())
+<a class="jxr_linenumber" name="L1607" href="#L1607">1607</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1608" href="#L1608">1608</a>
+<a class="jxr_linenumber" name="L1609" href="#L1609">1609</a> <strong
class="jxr_keyword">return</strong> builder.build();
+<a class="jxr_linenumber" name="L1610" href="#L1610">1610</a> }
+<a class="jxr_linenumber" name="L1611" href="#L1611">1611</a>
+<a class="jxr_linenumber" name="L1612" href="#L1612">1612</a> <strong
class="jxr_keyword">private</strong> <a name="ConstructorInfo"
href="../../../org/apache/juneau/commons/reflect/ConstructorInfo.html#ConstructorInfo">ConstructorInfo</a>
findNoArgConstructor() {
+<a class="jxr_linenumber" name="L1613" href="#L1613">1613</a>
+<a class="jxr_linenumber" name="L1614" href="#L1614">1614</a> <strong
class="jxr_keyword">if</strong> (is(Object.<strong
class="jxr_keyword">class</strong>))
+<a class="jxr_linenumber" name="L1615" href="#L1615">1615</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1616" href="#L1616">1616</a>
+<a class="jxr_linenumber" name="L1617" href="#L1617">1617</a> <strong
class="jxr_keyword">if</strong> (implClass.isPresent())
+<a class="jxr_linenumber" name="L1618" href="#L1618">1618</a>
<strong class="jxr_keyword">return</strong>
implClass.get().getPublicConstructor(x ->
x.hasNumParameters(0)).orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1619" href="#L1619">1619</a>
+<a class="jxr_linenumber" name="L1620" href="#L1620">1620</a> <strong
class="jxr_keyword">if</strong> (isAbstract())
+<a class="jxr_linenumber" name="L1621" href="#L1621">1621</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1622" href="#L1622">1622</a>
+<a class="jxr_linenumber" name="L1623" href="#L1623">1623</a> <strong
class="jxr_keyword">var</strong> numParams = isMemberClass() &&
isNotStatic() ? 1 : 0;
+<a class="jxr_linenumber" name="L1624" href="#L1624">1624</a> <strong
class="jxr_keyword">return</strong> getPublicConstructors()
+<a class="jxr_linenumber" name="L1625" href="#L1625">1625</a>
.stream()
+<a class="jxr_linenumber" name="L1626" href="#L1626">1626</a>
.filter(x -> x.isPublic() && x.isNotDeprecated() &&
x.hasNumParameters(numParams))
+<a class="jxr_linenumber" name="L1627" href="#L1627">1627</a>
.findFirst()
+<a class="jxr_linenumber" name="L1628" href="#L1628">1628</a>
.orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1629" href="#L1629">1629</a> }
+<a class="jxr_linenumber" name="L1630" href="#L1630">1630</a>
+<a class="jxr_linenumber" name="L1631" href="#L1631">1631</a> <strong
class="jxr_keyword">private</strong> Property<T,Object>
findParentProperty() {
+<a class="jxr_linenumber" name="L1632" href="#L1632">1632</a> <strong
class="jxr_keyword">var</strong> ap = beanContext.getAnnotationProvider();
+<a class="jxr_linenumber" name="L1633" href="#L1633">1633</a>
+<a class="jxr_linenumber" name="L1634" href="#L1634">1634</a> <strong
class="jxr_keyword">var</strong> s = getAllFields()
+<a class="jxr_linenumber" name="L1635" href="#L1635">1635</a>
.stream()
+<a class="jxr_linenumber" name="L1636" href="#L1636">1636</a>
.filter(x -> ap.has(ParentProperty.<strong
class="jxr_keyword">class</strong>, x))
+<a class="jxr_linenumber" name="L1637" href="#L1637">1637</a>
.map(x -> x.accessible())
+<a class="jxr_linenumber" name="L1638" href="#L1638">1638</a>
.map(x -> Property.<T,Object>create().field(x).build())
+<a class="jxr_linenumber" name="L1639" href="#L1639">1639</a>
.findFirst();
+<a class="jxr_linenumber" name="L1640" href="#L1640">1640</a>
+<a class="jxr_linenumber" name="L1641" href="#L1641">1641</a> <strong
class="jxr_keyword">if</strong> (s.isPresent()) <strong
class="jxr_keyword">return</strong> s.get();
+<a class="jxr_linenumber" name="L1642" href="#L1642">1642</a>
+<a class="jxr_linenumber" name="L1643" href="#L1643">1643</a> <strong
class="jxr_keyword">var</strong> builder = Property.<T,Object>create();
+<a class="jxr_linenumber" name="L1644" href="#L1644">1644</a>
+<a class="jxr_linenumber" name="L1645" href="#L1645">1645</a> <em
class="jxr_comment">// Look for setter method (1 parameter) with
@ParentProperty</em>
+<a class="jxr_linenumber" name="L1646" href="#L1646">1646</a> <strong
class="jxr_keyword">var</strong> setterMethod = getAllMethods()
+<a class="jxr_linenumber" name="L1647" href="#L1647">1647</a>
.stream()
+<a class="jxr_linenumber" name="L1648" href="#L1648">1648</a>
.filter(x -> ap.has(ParentProperty.<strong
class="jxr_keyword">class</strong>, x) && x.hasNumParameters(1))
+<a class="jxr_linenumber" name="L1649" href="#L1649">1649</a>
.findFirst();
+<a class="jxr_linenumber" name="L1650" href="#L1650">1650</a>
+<a class="jxr_linenumber" name="L1651" href="#L1651">1651</a> <strong
class="jxr_keyword">if</strong> (setterMethod.isPresent()) {
+<a class="jxr_linenumber" name="L1652" href="#L1652">1652</a>
builder.setter(setterMethod.get().accessible());
+<a class="jxr_linenumber" name="L1653" href="#L1653">1653</a>
+<a class="jxr_linenumber" name="L1654" href="#L1654">1654</a>
<em class="jxr_comment">// Try to find a corresponding getter method (even if
not annotated)</em>
+<a class="jxr_linenumber" name="L1655" href="#L1655">1655</a>
<em class="jxr_comment">// If setter is "setParent", look for "getParent" or
"isParent"</em>
+<a class="jxr_linenumber" name="L1656" href="#L1656">1656</a>
<strong class="jxr_keyword">var</strong> setterName =
setterMethod.get().getSimpleName();
+<a class="jxr_linenumber" name="L1657" href="#L1657">1657</a>
<strong class="jxr_keyword">if</strong> (setterName.startsWith(<span
class="jxr_string">"set"</span>) && setterName.length() > 3) {
+<a class="jxr_linenumber" name="L1658" href="#L1658">1658</a>
<strong class="jxr_keyword">var</strong> propertyName =
setterName.substring(3);
+<a class="jxr_linenumber" name="L1659" href="#L1659">1659</a>
<strong class="jxr_keyword">var</strong> getterName1 = <span
class="jxr_string">"get"</span> + propertyName;
+<a class="jxr_linenumber" name="L1660" href="#L1660">1660</a>
<strong class="jxr_keyword">var</strong> getterName2 = <span
class="jxr_string">"is"</span> + propertyName;
+<a class="jxr_linenumber" name="L1661" href="#L1661">1661</a>
+<a class="jxr_linenumber" name="L1662" href="#L1662">1662</a>
<strong class="jxr_keyword">var</strong> getter = getAllMethods()
+<a class="jxr_linenumber" name="L1663" href="#L1663">1663</a>
.stream()
+<a class="jxr_linenumber" name="L1664" href="#L1664">1664</a>
.filter(x -> !x.isStatic() && x.hasNumParameters(0)
&&
+<a class="jxr_linenumber" name="L1665" href="#L1665">1665</a>
(x.hasName(getterName1) || x.hasName(getterName2))
&&
+<a class="jxr_linenumber" name="L1666" href="#L1666">1666</a>
!x.getReturnType().is(Void.TYPE))
+<a class="jxr_linenumber" name="L1667" href="#L1667">1667</a>
.findFirst();
+<a class="jxr_linenumber" name="L1668" href="#L1668">1668</a>
+<a class="jxr_linenumber" name="L1669" href="#L1669">1669</a>
<strong class="jxr_keyword">if</strong> (getter.isPresent()) {
+<a class="jxr_linenumber" name="L1670" href="#L1670">1670</a>
builder.getter(getter.get().accessible());
+<a class="jxr_linenumber" name="L1671" href="#L1671">1671</a>
} <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L1672" href="#L1672">1672</a>
<em class="jxr_comment">// Try to find a field with the
property name (lowercase first letter)</em>
+<a class="jxr_linenumber" name="L1673" href="#L1673">1673</a>
<strong class="jxr_keyword">var</strong> fieldName =
Character.toLowerCase(propertyName.charAt(0)) + propertyName.substring(1);
+<a class="jxr_linenumber" name="L1674" href="#L1674">1674</a>
<strong class="jxr_keyword">var</strong> field = getAllFields()
+<a class="jxr_linenumber" name="L1675" href="#L1675">1675</a>
.stream()
+<a class="jxr_linenumber" name="L1676" href="#L1676">1676</a>
.filter(x -> !x.isStatic() &&
x.hasName(fieldName))
+<a class="jxr_linenumber" name="L1677" href="#L1677">1677</a>
.findFirst();
+<a class="jxr_linenumber" name="L1678" href="#L1678">1678</a>
+<a class="jxr_linenumber" name="L1679" href="#L1679">1679</a>
<strong class="jxr_keyword">if</strong> (field.isPresent()) {
+<a class="jxr_linenumber" name="L1680" href="#L1680">1680</a>
<strong class="jxr_keyword">var</strong> f =
field.get().accessible();
+<a class="jxr_linenumber" name="L1681" href="#L1681">1681</a>
builder.getter(obj -> f.get(obj));
+<a class="jxr_linenumber" name="L1682" href="#L1682">1682</a>
}
+<a class="jxr_linenumber" name="L1683" href="#L1683">1683</a>
}
+<a class="jxr_linenumber" name="L1684" href="#L1684">1684</a>
}
+<a class="jxr_linenumber" name="L1685" href="#L1685">1685</a> }
+<a class="jxr_linenumber" name="L1686" href="#L1686">1686</a>
+<a class="jxr_linenumber" name="L1687" href="#L1687">1687</a> <em
class="jxr_comment">// Look for getter method (0 parameters, non-void return)
with @ParentProperty</em>
+<a class="jxr_linenumber" name="L1688" href="#L1688">1688</a> <strong
class="jxr_keyword">var</strong> getterMethod = getAllMethods()
+<a class="jxr_linenumber" name="L1689" href="#L1689">1689</a>
.stream()
+<a class="jxr_linenumber" name="L1690" href="#L1690">1690</a>
.filter(x -> ap.has(ParentProperty.<strong
class="jxr_keyword">class</strong>, x) && x.hasNumParameters(0)
&& !x.getReturnType().is(Void.TYPE))
+<a class="jxr_linenumber" name="L1691" href="#L1691">1691</a>
.findFirst();
+<a class="jxr_linenumber" name="L1692" href="#L1692">1692</a>
+<a class="jxr_linenumber" name="L1693" href="#L1693">1693</a> <strong
class="jxr_keyword">if</strong> (getterMethod.isPresent()) {
+<a class="jxr_linenumber" name="L1694" href="#L1694">1694</a>
builder.getter(getterMethod.get().accessible());
+<a class="jxr_linenumber" name="L1695" href="#L1695">1695</a> }
+<a class="jxr_linenumber" name="L1696" href="#L1696">1696</a>
+<a class="jxr_linenumber" name="L1697" href="#L1697">1697</a> <em
class="jxr_comment">// Return null if neither setter nor getter was found</em>
+<a class="jxr_linenumber" name="L1698" href="#L1698">1698</a> <strong
class="jxr_keyword">if</strong> (setterMethod.isEmpty() &&
getterMethod.isEmpty())
+<a class="jxr_linenumber" name="L1699" href="#L1699">1699</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1700" href="#L1700">1700</a>
+<a class="jxr_linenumber" name="L1701" href="#L1701">1701</a> <strong
class="jxr_keyword">return</strong> builder.build();
+<a class="jxr_linenumber" name="L1702" href="#L1702">1702</a> }
+<a class="jxr_linenumber" name="L1703" href="#L1703">1703</a>
+<a class="jxr_linenumber" name="L1704" href="#L1704">1704</a> <strong
class="jxr_keyword">private</strong> <a name="ConstructorInfo"
href="../../../org/apache/juneau/commons/reflect/ConstructorInfo.html#ConstructorInfo">ConstructorInfo</a>
findStringConstructor() {
+<a class="jxr_linenumber" name="L1705" href="#L1705">1705</a>
+<a class="jxr_linenumber" name="L1706" href="#L1706">1706</a> <strong
class="jxr_keyword">if</strong> (is(Object.<strong
class="jxr_keyword">class</strong>) || isAbstract())
+<a class="jxr_linenumber" name="L1707" href="#L1707">1707</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1708" href="#L1708">1708</a>
+<a class="jxr_linenumber" name="L1709" href="#L1709">1709</a> <strong
class="jxr_keyword">if</strong> (implClass.isPresent())
+<a class="jxr_linenumber" name="L1710" href="#L1710">1710</a>
<strong class="jxr_keyword">return</strong>
implClass.get().getPublicConstructor(x -> x.hasParameterTypes(String.<strong
class="jxr_keyword">class</strong>)).orElse(<strong
class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1711" href="#L1711">1711</a>
+<a class="jxr_linenumber" name="L1712" href="#L1712">1712</a> <strong
class="jxr_keyword">if</strong> (isAbstract())
+<a class="jxr_linenumber" name="L1713" href="#L1713">1713</a>
<strong class="jxr_keyword">return</strong> <strong
class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L1714" href="#L1714">1714</a>
+<a class="jxr_linenumber" name="L1715" href="#L1715">1715</a> <strong
class="jxr_keyword">var</strong> numParams = isMemberClass() &&
isNotStatic() ? 2 : 1;
+<a class="jxr_linenumber" name="L1716" href="#L1716">1716</a> <strong
class="jxr_keyword">return</strong> getPublicConstructors()
+<a class="jxr_linenumber" name="L1717" href="#L1717">1717</a>
.stream()
+<a class="jxr_linenumber" name="L1718" href="#L1718">1718</a>
.filter(x -> x.isPublic() && x.isNotDeprecated() &&
x.hasNumParameters(numParams))
+<a class="jxr_linenumber" name="L1719" href="#L1719">1719</a>
.filter(x -> x.getParameter(numParams == 2 ? 1 : 0).isType(String.<strong
class="jxr_keyword">class</strong>))
+<a class="jxr_linenumber" name="L1720" href="#L1720">1720</a>
.findFirst()
+<a class="jxr_linenumber" name="L1721" href="#L1721">1721</a>
.orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1722" href="#L1722">1722</a> }
+<a class="jxr_linenumber" name="L1723" href="#L1723">1723</a>
+<a class="jxr_linenumber" name="L1724" href="#L1724">1724</a> <em
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1725" href="#L1725">1725</a> <em
class="jxr_javadoccomment"> * Returns the {@link ObjectSwap} where the
specified class is the same/subclass of the normal class of one of the</em>
+<a class="jxr_linenumber" name="L1726" href="#L1726">1726</a> <em
class="jxr_javadoccomment"> * child POJO swaps associated with this
class.</em>
+<a class="jxr_linenumber" name="L1727" href="#L1727">1727</a> <em
class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="L1728" href="#L1728">1728</a> <em
class="jxr_javadoccomment"> * @param normalClass The normal class being
resolved.</em>
+<a class="jxr_linenumber" name="L1729" href="#L1729">1729</a> <em
class="jxr_javadoccomment"> * @return The resolved {@link ObjectSwap} or
<jk>null</jk> if none were found.</em>
+<a class="jxr_linenumber" name="L1730" href="#L1730">1730</a> <em
class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L1731" href="#L1731">1731</a> <strong
class="jxr_keyword">protected</strong> ObjectSwap<?,?>
getChildObjectSwapForSwap(Class<?> normalClass) {
+<a class="jxr_linenumber" name="L1732" href="#L1732">1732</a> <strong
class="jxr_keyword">return</strong> childSwapMap.get(normalClass);
+<a class="jxr_linenumber" name="L1733" href="#L1733">1733</a> }
+<a class="jxr_linenumber" name="L1734" href="#L1734">1734</a>
+<a class="jxr_linenumber" name="L1735" href="#L1735">1735</a> <em
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1736" href="#L1736">1736</a> <em
class="jxr_javadoccomment"> * Returns the {@link ObjectSwap} where the
specified class is the same/subclass of the swap class of one of the child</em>
+<a class="jxr_linenumber" name="L1737" href="#L1737">1737</a> <em
class="jxr_javadoccomment"> * POJO swaps associated with this class.</em>
+<a class="jxr_linenumber" name="L1738" href="#L1738">1738</a> <em
class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="L1739" href="#L1739">1739</a> <em
class="jxr_javadoccomment"> * @param swapClass The swap class being
resolved.</em>
+<a class="jxr_linenumber" name="L1740" href="#L1740">1740</a> <em
class="jxr_javadoccomment"> * @return The resolved {@link ObjectSwap} or
<jk>null</jk> if none were found.</em>
+<a class="jxr_linenumber" name="L1741" href="#L1741">1741</a> <em
class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L1742" href="#L1742">1742</a> <strong
class="jxr_keyword">protected</strong> ObjectSwap<?,?>
getChildObjectSwapForUnswap(Class<?> swapClass) {
+<a class="jxr_linenumber" name="L1743" href="#L1743">1743</a> <strong
class="jxr_keyword">return</strong> childUnswapMap.get(swapClass);
+<a class="jxr_linenumber" name="L1744" href="#L1744">1744</a> }
+<a class="jxr_linenumber" name="L1745" href="#L1745">1745</a>
+<a class="jxr_linenumber" name="L1746" href="#L1746">1746</a> <em
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1747" href="#L1747">1747</a> <em
class="jxr_javadoccomment"> * Returns <jk>true</jk> if this class
or any child classes has a {@link ObjectSwap} associated with it.</em>
+<a class="jxr_linenumber" name="L1748" href="#L1748">1748</a> <em
class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="L1749" href="#L1749">1749</a> <em
class="jxr_javadoccomment"> * <p></em>
+<a class="jxr_linenumber" name="L1750" href="#L1750">1750</a> <em
class="jxr_javadoccomment"> * Used when transforming bean properties to
prevent having to look up transforms if we know for certain that no</em>
+<a class="jxr_linenumber" name="L1751" href="#L1751">1751</a> <em
class="jxr_javadoccomment"> * transforms are associated with a bean
property.</em>
+<a class="jxr_linenumber" name="L1752" href="#L1752">1752</a> <em
class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="L1753" href="#L1753">1753</a> <em
class="jxr_javadoccomment"> * @return <jk>true</jk> if this class
or any child classes has a {@link ObjectSwap} associated with it.</em>
+<a class="jxr_linenumber" name="L1754" href="#L1754">1754</a> <em
class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L1755" href="#L1755">1755</a> <strong
class="jxr_keyword">protected</strong> <strong
class="jxr_keyword">boolean</strong> hasChildSwaps() {
+<a class="jxr_linenumber" name="L1756" href="#L1756">1756</a> <strong
class="jxr_keyword">return</strong> ! childSwaps.get().isEmpty();
+<a class="jxr_linenumber" name="L1757" href="#L1757">1757</a> }
+<a class="jxr_linenumber" name="L1758" href="#L1758">1758</a>
+<a class="jxr_linenumber" name="L1759" href="#L1759">1759</a> <em
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1760" href="#L1760">1760</a> <em
class="jxr_javadoccomment"> * Appends this object as a readable string to the
specified string builder.</em>
+<a class="jxr_linenumber" name="L1761" href="#L1761">1761</a> <em
class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="L1762" href="#L1762">1762</a> <em
class="jxr_javadoccomment"> * @param sb The string builder to append this
object to.</em>
+<a class="jxr_linenumber" name="L1763" href="#L1763">1763</a> <em
class="jxr_javadoccomment"> * @param simple Print simple class names only (no
package).</em>
+<a class="jxr_linenumber" name="L1764" href="#L1764">1764</a> <em
class="jxr_javadoccomment"> * @return The passed-in string builder.</em>
+<a class="jxr_linenumber" name="L1765" href="#L1765">1765</a> <em
class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L1766" href="#L1766">1766</a> <strong
class="jxr_keyword">protected</strong> StringBuilder toString(StringBuilder sb,
<strong class="jxr_keyword">boolean</strong> simple) {
+<a class="jxr_linenumber" name="L1767" href="#L1767">1767</a> <strong
class="jxr_keyword">var</strong> n = <strong
class="jxr_keyword">inner</strong>().getName();
+<a class="jxr_linenumber" name="L1768" href="#L1768">1768</a> <strong
class="jxr_keyword">if</strong> (simple) {
+<a class="jxr_linenumber" name="L1769" href="#L1769">1769</a>
<strong class="jxr_keyword">var</strong> i = n.lastIndexOf('.');
+<a class="jxr_linenumber" name="L1770" href="#L1770">1770</a>
n = n.substring(i == -1 ? 0 : i + 1).replace('$', '.');
+<a class="jxr_linenumber" name="L1771" href="#L1771">1771</a> }
+<a class="jxr_linenumber" name="L1772" href="#L1772">1772</a> <strong
class="jxr_keyword">if</strong> (cat.is(ARRAY))
+<a class="jxr_linenumber" name="L1773" href="#L1773">1773</a>
<strong class="jxr_keyword">return</strong> elementType.get().toString(sb,
simple).append('[').append(']');
+<a class="jxr_linenumber" name="L1774" href="#L1774">1774</a> <strong
class="jxr_keyword">if</strong> (cat.is(BEANMAP))
+<a class="jxr_linenumber" name="L1775" href="#L1775">1775</a>
<strong class="jxr_keyword">return</strong> sb.append(cn(BeanMap.<strong
class="jxr_keyword">class</strong>)).append('<').append(n).append('>');
+<a class="jxr_linenumber" name="L1776" href="#L1776">1776</a> <strong
class="jxr_keyword">if</strong> (cat.is(MAP)) {
+<a class="jxr_linenumber" name="L1777" href="#L1777">1777</a>
<strong class="jxr_keyword">var</strong> kvTypes = keyValueTypes.get();
+<a class="jxr_linenumber" name="L1778" href="#L1778">1778</a>
<strong class="jxr_keyword">var</strong> kt = kvTypes.optKeyType();
+<a class="jxr_linenumber" name="L1779" href="#L1779">1779</a>
<strong class="jxr_keyword">var</strong> vt = kvTypes.optValueType();
+<a class="jxr_linenumber" name="L1780" href="#L1780">1780</a>
<strong class="jxr_keyword">if</strong> (kt.isPresent() &&
vt.isPresent() && kt.get().isObject() && vt.get().isObject())
+<a class="jxr_linenumber" name="L1781" href="#L1781">1781</a>
<strong class="jxr_keyword">return</strong> sb.append(n);
+<a class="jxr_linenumber" name="L1782" href="#L1782">1782</a>
<strong class="jxr_keyword">return</strong>
sb.append(n).append('<').append(kt.map(x ->
x.toString(simple)).orElse(<span
class="jxr_string">"?"</span>)).append(',').append(vt.map(x ->
x.toString(simple)).orElse(<span class="jxr_string">"?"</span>)).append('>');
+<a class="jxr_linenumber" name="L1783" href="#L1783">1783</a> }
+<a class="jxr_linenumber" name="L1784" href="#L1784">1784</a> <strong
class="jxr_keyword">if</strong> (cat.is(COLLECTION) || is(Optional.<strong
class="jxr_keyword">class</strong>)) {
+<a class="jxr_linenumber" name="L1785" href="#L1785">1785</a>
<strong class="jxr_keyword">var</strong> et = elementType.get();
+<a class="jxr_linenumber" name="L1786" href="#L1786">1786</a>
<strong class="jxr_keyword">return</strong> sb.append(n).append(et != <strong
class="jxr_keyword">null</strong> && et.isObject() ? <span
class="jxr_string">""</span> : <span class="jxr_string">"<"</span> + (et ==
<strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"?"</span>
: et.toString(simple)) + <span class="jxr_string">">"</span>);
+<a class="jxr_linenumber" name="L1787" href="#L1787">1787</a> }
+<a class="jxr_linenumber" name="L1788" href="#L1788">1788</a> <strong
class="jxr_keyword">return</strong> sb.append(n);
+<a class="jxr_linenumber" name="L1789" href="#L1789">1789</a> }
+<a class="jxr_linenumber" name="L1790" href="#L1790">1790</a>
+<a class="jxr_linenumber" name="L1791" href="#L1791">1791</a> <em
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1792" href="#L1792">1792</a> <em
class="jxr_javadoccomment"> * Causes thread to wait until constructor has
exited.</em>
+<a class="jxr_linenumber" name="L1793" href="#L1793">1793</a> <em
class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L1794" href="#L1794">1794</a> <strong
class="jxr_keyword">void</strong> waitForInit() {
+<a class="jxr_linenumber" name="L1795" href="#L1795">1795</a> <strong
class="jxr_keyword">try</strong> (<strong class="jxr_keyword">var</strong> x =
lock.read()) {}
+<a class="jxr_linenumber" name="L1796" href="#L1796">1796</a> }
+<a class="jxr_linenumber" name="L1797" href="#L1797">1797</a> }
</pre>
<hr/>
<div id="footer">© 2016–2025 <a href="https://www.apache.org/">The Apache
Software Foundation</a></div>