File tree Expand file tree Collapse file tree 2 files changed +25
-6
lines changed
main/java/org/springframework/core/codec
test/java/org/springframework/core/codec Expand file tree Collapse file tree 2 files changed +25
-6
lines changed Original file line number Diff line number Diff line change @@ -157,16 +157,20 @@ private Collection<DataBuffer> processDataBuffer(
157
157
int startIndex = buffer .readPosition ();
158
158
int length = (endIndex - startIndex + 1 );
159
159
DataBuffer slice = buffer .retainedSlice (startIndex , length );
160
- if (this .stripDelimiter ) {
161
- slice .writePosition (slice .writePosition () - matcher .delimiter ().length );
162
- }
163
160
result = (result != null ? result : new ArrayList <>());
164
161
if (chunks .isEmpty ()) {
162
+ if (this .stripDelimiter ) {
163
+ slice .writePosition (slice .writePosition () - matcher .delimiter ().length );
164
+ }
165
165
result .add (slice );
166
166
}
167
167
else {
168
168
chunks .add (slice );
169
- result .add (buffer .factory ().join (chunks ));
169
+ DataBuffer joined = buffer .factory ().join (chunks );
170
+ if (this .stripDelimiter ) {
171
+ joined .writePosition (joined .writePosition () - matcher .delimiter ().length );
172
+ }
173
+ result .add (joined );
170
174
chunks .clear ();
171
175
}
172
176
buffer .readPosition (endIndex + 1 );
Original file line number Diff line number Diff line change @@ -125,17 +125,32 @@ void decodeNewLine() {
125
125
);
126
126
127
127
testDecode (input , String .class , step -> step
128
- .expectNext ("" )
128
+ .expectNext ("" ). as ( "1st" )
129
129
.expectNext ("abc" )
130
130
.expectNext ("defghi" )
131
- .expectNext ("" )
131
+ .expectNext ("" ). as ( "2nd" )
132
132
.expectNext ("jklmno" )
133
133
.expectNext ("pqr" )
134
134
.expectNext ("stuvwxyz" )
135
135
.expectComplete ()
136
136
.verify ());
137
137
}
138
138
139
+ @ Test
140
+ void decodeNewlinesAcrossBuffers () {
141
+ Flux <DataBuffer > input = Flux .just (
142
+ stringBuffer ("\r " ),
143
+ stringBuffer ("\n " ),
144
+ stringBuffer ("xyz" )
145
+ );
146
+
147
+ testDecode (input , String .class , step -> step
148
+ .expectNext ("" )
149
+ .expectNext ("xyz" )
150
+ .expectComplete ()
151
+ .verify ());
152
+ }
153
+
139
154
@ Test
140
155
void maxInMemoryLimit () {
141
156
Flux <DataBuffer > input = Flux .just (
You can’t perform that action at this time.
0 commit comments