21
21
import java .util .List ;
22
22
import java .util .Map ;
23
23
24
- import com .fasterxml .jackson .core .JsonFactory ;
25
24
import com .fasterxml .jackson .core .JsonProcessingException ;
26
25
import com .fasterxml .jackson .databind .JavaType ;
27
26
import com .fasterxml .jackson .databind .ObjectMapper ;
50
49
/**
51
50
* Abstract base class for Jackson 2.9 decoding, leveraging non-blocking parsing.
52
51
*
52
+ * <p>Compatible with Jackson 2.9.7 and higher.
53
+ *
53
54
* @author Sebastien Deleuze
54
55
* @author Rossen Stoyanchev
55
56
* @author Arjen Poutsma
58
59
*/
59
60
public abstract class AbstractJackson2Decoder extends Jackson2CodecSupport implements HttpMessageDecoder <Object > {
60
61
61
- /**
62
- * Until https://github.com/FasterXML/jackson-core/issues/476 is resolved,
63
- * we need to ensure buffer recycling is off.
64
- */
65
- private final JsonFactory jsonFactory ;
66
-
67
-
68
62
/**
69
63
* Constructor with a Jackson {@link ObjectMapper} to use.
70
64
*/
71
65
protected AbstractJackson2Decoder (ObjectMapper mapper , MimeType ... mimeTypes ) {
72
66
super (mapper , mimeTypes );
73
- this .jsonFactory = mapper .getFactory ().copy ()
74
- .disable (JsonFactory .Feature .USE_THREAD_LOCAL_FOR_BUFFER_RECYCLING );
75
67
}
76
68
77
69
@@ -87,8 +79,9 @@ public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType
87
79
public Flux <Object > decode (Publisher <DataBuffer > input , ResolvableType elementType ,
88
80
@ Nullable MimeType mimeType , @ Nullable Map <String , Object > hints ) {
89
81
82
+ ObjectMapper mapper = getObjectMapper ();
90
83
Flux <TokenBuffer > tokens = Jackson2Tokenizer .tokenize (
91
- Flux .from (input ), this . jsonFactory , getObjectMapper () , true );
84
+ Flux .from (input ), mapper . getFactory (), mapper , true );
92
85
93
86
ObjectReader reader = getObjectReader (elementType , hints );
94
87
0 commit comments