RestTempalte customizer can return an instance of rest template; fixes gh-1440 (#1446)

This commit is contained in:
Marcin Grzejszczak
2019-09-19 09:26:07 +02:00
committed by GitHub
parent 17832d433d
commit 2e6ae5d314
3 changed files with 24 additions and 4 deletions

View File

@@ -28,7 +28,7 @@ import org.springframework.web.client.RestTemplate;
/**
* Default {@link ZipkinRestTemplateCustomizer} that provides the GZip compression if
* {@link ZipkinProperties#compression} is enabled.
* {@link ZipkinProperties#getCompression()} is enabled.
*
* @author Marcin Grzejszczak
* @since 1.1.0
@@ -42,10 +42,11 @@ public class DefaultZipkinRestTemplateCustomizer implements ZipkinRestTemplateCu
}
@Override
public void customize(RestTemplate restTemplate) {
public RestTemplate customizeTemplate(RestTemplate restTemplate) {
if (this.zipkinProperties.getCompression().isEnabled()) {
restTemplate.getInterceptors().add(0, new GZipInterceptor());
}
return restTemplate;
}
private class GZipInterceptor implements ClientHttpRequestInterceptor {

View File

@@ -31,6 +31,25 @@ import org.springframework.web.client.RestTemplate;
*/
public interface ZipkinRestTemplateCustomizer {
void customize(RestTemplate restTemplate);
/**
* Customizes the {@link RestTemplate}.
* @deprecated use
* {@link ZipkinRestTemplateCustomizer#customizeTemplate(RestTemplate)}
* @param restTemplate object to customize
*/
@Deprecated
default void customize(RestTemplate restTemplate) {
customizeTemplate(restTemplate);
};
/**
* Customizes the {@link RestTemplate} instance. Might return a new one if necessary.
* @param restTemplate default object to customize
* @return customized {@link RestTemplate} or a new object
* @since 2.2.0
*/
default RestTemplate customizeTemplate(RestTemplate restTemplate) {
return restTemplate;
}
}

View File

@@ -58,7 +58,7 @@ class ZipkinRestTemplateSenderConfiguration {
public Sender restTemplateSender(ZipkinProperties zipkin,
ZipkinRestTemplateCustomizer zipkinRestTemplateCustomizer) {
RestTemplate restTemplate = new ZipkinRestTemplateWrapper(zipkin, this.extractor);
zipkinRestTemplateCustomizer.customize(restTemplate);
restTemplate = zipkinRestTemplateCustomizer.customizeTemplate(restTemplate);
return new RestTemplateSender(restTemplate, zipkin.getBaseUrl(),
zipkin.getEncoder());
}