@ -1,5 +1,5 @@
/ *
* Copyright 2012 - 202 2 the original author or authors .
* Copyright 2012 - 202 3 the original author or authors .
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -24,7 +24,9 @@ import java.util.function.Supplier;
import org.springframework.beans.BeanUtils ;
import org.springframework.boot.web.client.RestTemplateBuilder ;
import org.springframework.boot.web.client.RestTemplateCustomizer ;
import org.springframework.http.client.BufferingClientHttpRequestFactory ;
import org.springframework.test.web.client.MockRestServiceServer ;
import org.springframework.test.web.client.MockRestServiceServer.MockRestServiceServerBuilder ;
import org.springframework.test.web.client.RequestExpectationManager ;
import org.springframework.test.web.client.SimpleRequestExpectationManager ;
import org.springframework.util.Assert ;
@ -49,6 +51,7 @@ import org.springframework.web.client.RestTemplate;
*
* @author Phillip Webb
* @author Moritz Halbritter
* @author Chinmoy Chakraborty
* @since 1.4 .0
* @see # getServer ( )
* @see # getServer ( RestTemplate )
@ -63,6 +66,8 @@ public class MockServerRestTemplateCustomizer implements RestTemplateCustomizer
private boolean detectRootUri = true ;
private boolean bufferContent = false ;
public MockServerRestTemplateCustomizer ( ) {
this ( SimpleRequestExpectationManager : : new ) ;
}
@ -96,13 +101,28 @@ public class MockServerRestTemplateCustomizer implements RestTemplateCustomizer
this . detectRootUri = detectRootUri ;
}
/ * *
* Set if the { @link BufferingClientHttpRequestFactory } wrapper should be used to
* buffer the input and output streams , and for example , allow multiple reads of the
* response body .
* @param bufferContent if request and response content should be buffered
* @since 3.1 .0
* /
public void setBufferContent ( boolean bufferContent ) {
this . bufferContent = bufferContent ;
}
@Override
public void customize ( RestTemplate restTemplate ) {
RequestExpectationManager expectationManager = createExpectationManager ( ) ;
if ( this . detectRootUri ) {
expectationManager = RootUriRequestExpectationManager . forRestTemplate ( restTemplate , expectationManager ) ;
}
MockRestServiceServer server = MockRestServiceServer . bindTo ( restTemplate ) . build ( expectationManager ) ;
MockRestServiceServerBuilder serverBuilder = MockRestServiceServer . bindTo ( restTemplate ) ;
if ( this . bufferContent ) {
serverBuilder . bufferContent ( ) ;
}
MockRestServiceServer server = serverBuilder . build ( expectationManager ) ;
this . expectationManagers . put ( restTemplate , expectationManager ) ;
this . servers . put ( restTemplate , server ) ;
}