@@ -425,8 +425,7 @@ public abstract WritableObjectId findObjectId(Object forPojo,
425
425
* finding any serializer
426
426
*/
427
427
@ SuppressWarnings ("unchecked" )
428
- public JsonSerializer <Object > findValueSerializer (Class <?> valueType ,
429
- BeanProperty property )
428
+ public JsonSerializer <Object > findValueSerializer (Class <?> valueType , BeanProperty property )
430
429
throws JsonMappingException
431
430
{
432
431
// Fast lookup from local lookup thingy works?
@@ -440,11 +439,7 @@ public JsonSerializer<Object> findValueSerializer(Class<?> valueType,
440
439
if (ser == null ) {
441
440
// If neither, must create
442
441
ser = _createAndCacheUntypedSerializer (valueType );
443
- // Not found? Must use the unknown type serializer
444
- /* Couldn't create? Need to return the fallback serializer, which
445
- * most likely will report an error: but one question is whether
446
- * we should cache it?
447
- */
442
+ // Not found? Must use the unknown type serializer, which will report error later on
448
443
if (ser == null ) {
449
444
ser = getUnknownTypeSerializer (valueType );
450
445
// Should this be added to lookups?
@@ -474,22 +469,14 @@ public JsonSerializer<Object> findValueSerializer(Class<?> valueType,
474
469
public JsonSerializer <Object > findValueSerializer (JavaType valueType , BeanProperty property )
475
470
throws JsonMappingException
476
471
{
477
- // Fast lookup from local lookup thingy works?
472
+ // (see comments from above method)
478
473
JsonSerializer <Object > ser = _knownSerializers .untypedValueSerializer (valueType );
479
474
if (ser == null ) {
480
- // If not, maybe shared map already has it?
481
475
ser = _serializerCache .untypedValueSerializer (valueType );
482
476
if (ser == null ) {
483
- // If neither, must create
484
477
ser = _createAndCacheUntypedSerializer (valueType );
485
- // Not found? Must use the unknown type serializer
486
- /* Couldn't create? Need to return the fallback serializer, which
487
- * most likely will report an error: but one question is whether
488
- * we should cache it?
489
- */
490
478
if (ser == null ) {
491
479
ser = getUnknownTypeSerializer (valueType .getRawClass ());
492
- // Should this be added to lookups?
493
480
if (CACHE_UNKNOWN_MAPPINGS ) {
494
481
_serializerCache .addAndResolveNonTypedSerializer (valueType , ser , this );
495
482
}
@@ -500,6 +487,62 @@ public JsonSerializer<Object> findValueSerializer(JavaType valueType, BeanProper
500
487
return (JsonSerializer <Object >) handleSecondaryContextualization (ser , property );
501
488
}
502
489
490
+ /**
491
+ * Method variant used when we do NOT want contextualization to happen; it will need
492
+ * to be handled at a later point, but caller wants to be able to do that
493
+ * as needed; sometimes to avoid infinite loops
494
+ *
495
+ * @since 2.5
496
+ */
497
+ public JsonSerializer <Object > findValueSerializer (Class <?> valueType ) throws JsonMappingException
498
+ {
499
+ // (see comments from above method)
500
+ JsonSerializer <Object > ser = _knownSerializers .untypedValueSerializer (valueType );
501
+ if (ser == null ) {
502
+ ser = _serializerCache .untypedValueSerializer (valueType );
503
+ if (ser == null ) {
504
+ ser = _serializerCache .untypedValueSerializer (_config .constructType (valueType ));
505
+ if (ser == null ) {
506
+ ser = _createAndCacheUntypedSerializer (valueType );
507
+ if (ser == null ) {
508
+ ser = getUnknownTypeSerializer (valueType );
509
+ if (CACHE_UNKNOWN_MAPPINGS ) {
510
+ _serializerCache .addAndResolveNonTypedSerializer (valueType , ser , this );
511
+ }
512
+ }
513
+ }
514
+ }
515
+ }
516
+ return ser ;
517
+ }
518
+
519
+ /**
520
+ * Method variant used when we do NOT want contextualization to happen; it will need
521
+ * to be handled at a later point, but caller wants to be able to do that
522
+ * as needed; sometimes to avoid infinite loops
523
+ *
524
+ * @since 2.5
525
+ */
526
+ public JsonSerializer <Object > findValueSerializer (JavaType valueType )
527
+ throws JsonMappingException
528
+ {
529
+ // (see comments from above method)
530
+ JsonSerializer <Object > ser = _knownSerializers .untypedValueSerializer (valueType );
531
+ if (ser == null ) {
532
+ ser = _serializerCache .untypedValueSerializer (valueType );
533
+ if (ser == null ) {
534
+ ser = _createAndCacheUntypedSerializer (valueType );
535
+ if (ser == null ) {
536
+ ser = getUnknownTypeSerializer (valueType .getRawClass ());
537
+ if (CACHE_UNKNOWN_MAPPINGS ) {
538
+ _serializerCache .addAndResolveNonTypedSerializer (valueType , ser , this );
539
+ }
540
+ }
541
+ }
542
+ }
543
+ return ser ;
544
+ }
545
+
503
546
/**
504
547
* Similar to {@link #findValueSerializer(JavaType, BeanProperty)}, but used
505
548
* when finding "primary" property value serializer (one directly handling
0 commit comments