@@ -128,6 +128,10 @@ public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType
128
128
public Flux <Object > decode (Publisher <DataBuffer > input , ResolvableType elementType ,
129
129
@ Nullable MimeType mimeType , @ Nullable Map <String , Object > hints ) {
130
130
131
+ return decodeToFlux (input , elementType , mimeType , hints ,null );
132
+ }
133
+
134
+ private Flux <Object > decodeToFlux (Publisher <DataBuffer > input , ResolvableType elementType , @ Nullable MimeType mimeType , @ Nullable Map <String , Object > hints ,@ Nullable Boolean tokenizeArrays ) {
131
135
ObjectMapper mapper = selectObjectMapper (elementType , mimeType );
132
136
if (mapper == null ) {
133
137
return Flux .error (new IllegalStateException ("No ObjectMapper for " + elementType ));
@@ -138,8 +142,10 @@ public Flux<Object> decode(Publisher<DataBuffer> input, ResolvableType elementTy
138
142
forceUseOfBigDecimal = true ;
139
143
}
140
144
141
- boolean tokenizeArrays = (!elementType .isArray () &&
142
- !Collection .class .isAssignableFrom (elementType .resolve (Object .class )));
145
+ if (tokenizeArrays == null ) {
146
+ tokenizeArrays = (!elementType .isArray () &&
147
+ !Collection .class .isAssignableFrom (elementType .resolve (Object .class )));
148
+ }
143
149
144
150
Flux <DataBuffer > processed = processInput (input , elementType , mimeType , hints );
145
151
Flux <TokenBuffer > tokens = Jackson2Tokenizer .tokenize (processed , mapper .getFactory (), mapper ,
@@ -188,15 +194,7 @@ protected Flux<DataBuffer> processInput(Publisher<DataBuffer> input, ResolvableT
188
194
@ Override
189
195
public Mono <Object > decodeToMono (Publisher <DataBuffer > input , ResolvableType elementType ,
190
196
@ Nullable MimeType mimeType , @ Nullable Map <String , Object > hints ) {
191
-
192
- return Mono .deferContextual (contextView -> {
193
-
194
- Map <String , Object > hintsToUse = contextView .isEmpty () ? hints :
195
- Hints .merge (hints , ContextView .class .getName (), contextView );
196
-
197
- return DataBufferUtils .join (input , this .maxInMemorySize ).flatMap (dataBuffer ->
198
- Mono .justOrEmpty (decode (dataBuffer , elementType , mimeType , hintsToUse )));
199
- });
197
+ return decodeToFlux (input , elementType , mimeType , hints , false ).singleOrEmpty ();
200
198
}
201
199
202
200
@ Override
0 commit comments