@ -31,13 +31,14 @@ import org.springframework.util.StreamUtils;
@@ -31,13 +31,14 @@ import org.springframework.util.StreamUtils;
* into memory , thus allowing for multiple invocations of { @link # getBody ( ) } .
*
* @author Arjen Poutsma
* @author Juergen Hoeller
* @since 3 . 1
* /
final class BufferingClientHttpResponseWrapper implements ClientHttpResponse {
private final ClientHttpResponse response ;
private byte @Nullable [ ] body ;
private volatile byte @Nullable [ ] body ;
BufferingClientHttpResponseWrapper ( ClientHttpResponse response ) {
@ -62,10 +63,17 @@ final class BufferingClientHttpResponseWrapper implements ClientHttpResponse {
@@ -62,10 +63,17 @@ final class BufferingClientHttpResponseWrapper implements ClientHttpResponse {
@Override
public InputStream getBody ( ) throws IOException {
if ( this . body = = null ) {
this . body = StreamUtils . copyToByteArray ( this . response . getBody ( ) ) ;
byte [ ] body = this . body ;
if ( body = = null ) {
synchronized ( this ) {
body = this . body ;
if ( body = = null ) {
body = StreamUtils . copyToByteArray ( this . response . getBody ( ) ) ;
this . body = body ;
}
}
}
return new ByteArrayInputStream ( this . body ) ;
return new ByteArrayInputStream ( body ) ;
}
@Override