@@ -74,6 +74,7 @@ public static Class<?>[] types() {
74
74
75
75
// Special impl:
76
76
StringBuilder .class ,
77
+ StringBuffer .class , // since 2.13.3
77
78
};
78
79
}
79
80
@@ -120,6 +121,8 @@ public static FromStringDeserializer<?> findDeserializer(Class<?> rawType)
120
121
kind = Std .STD_INET_SOCKET_ADDRESS ;
121
122
} else if (rawType == StringBuilder .class ) {
122
123
return new StringBuilderDeserializer ();
124
+ } else if (rawType == StringBuffer .class ) { // since 2.13.3
125
+ return new StringBufferDeserializer ();
123
126
} else {
124
127
return null ;
125
128
}
@@ -465,9 +468,8 @@ private Locale _deSerializeBCP47Locale(String value, int ix, String first, Strin
465
468
}
466
469
}
467
470
}
468
-
471
+
469
472
// @since 2.12 to simplify logic a bit: should not use coercions when reading
470
- // String Values
471
473
static class StringBuilderDeserializer extends FromStringDeserializer <Object >
472
474
{
473
475
public StringBuilderDeserializer () {
@@ -503,4 +505,35 @@ protected Object _deserialize(String value, DeserializationContext ctxt)
503
505
return new StringBuilder (value );
504
506
}
505
507
}
508
+
509
+ // @since 2.13.3: duplicated code but for only 2 impls base class seems unnecessary
510
+ static class StringBufferDeserializer extends FromStringDeserializer <Object >
511
+ {
512
+ public StringBufferDeserializer () { super (StringBuffer .class ); }
513
+
514
+ @ Override
515
+ public LogicalType logicalType () { return LogicalType .Textual ; }
516
+
517
+ @ Override
518
+ public Object getEmptyValue (DeserializationContext ctxt ) {
519
+ return new StringBuffer ();
520
+ }
521
+
522
+ @ Override
523
+ public Object deserialize (JsonParser p , DeserializationContext ctxt ) throws IOException
524
+ {
525
+ String text = p .getValueAsString ();
526
+ if (text != null ) {
527
+ return _deserialize (text , ctxt );
528
+ }
529
+ return super .deserialize (p , ctxt );
530
+ }
531
+
532
+ @ Override
533
+ protected Object _deserialize (String value , DeserializationContext ctxt )
534
+ throws IOException
535
+ {
536
+ return new StringBuffer (value );
537
+ }
538
+ }
506
539
}
0 commit comments