Fix binary incompatibility of old TestRestTemplate

The TestRestTemplate is deprecated (so people can still use it)
but unusable because it only has constructors which depend on the
new options enum.
This commit is contained in:
Dave Syer 2016-05-06 13:06:29 +01:00
parent b97ebdd17f
commit be398741e1
2 changed files with 64 additions and 16 deletions

View File

@ -19,10 +19,11 @@ package org.springframework.boot.test;
import org.springframework.web.client.RestTemplate;
/**
* Convenient subclass of {@link RestTemplate} that is suitable for integration tests.
* They are fault tolerant, and optionally can carry Basic authentication headers. If
* Apache Http Client 4.3.2 or better is available (recommended) it will be used as the
* client, and by default configured to ignore cookies and redirects.
* Convenient subclass of {@link RestTemplate} that is suitable for integration
* tests. They are fault tolerant, and optionally can carry Basic authentication
* headers. If Apache Http Client 4.3.2 or better is available (recommended) it
* will be used as the client, and by default configured to ignore cookies and
* redirects.
*
* @author Dave Syer
* @author Phillip Webb
@ -30,26 +31,58 @@ import org.springframework.web.client.RestTemplate;
* {@link org.springframework.boot.test.web.client.TestRestTemplate}
*/
@Deprecated
public class TestRestTemplate
extends org.springframework.boot.test.web.client.TestRestTemplate {
public class TestRestTemplate extends org.springframework.boot.test.web.client.TestRestTemplate {
/**
* Create a new {@link TestRestTemplate} instance.
* @param httpClientOptions client options to use if the Apache HTTP Client is used
*
* @param httpClientOptions
* client options to use if the Apache HTTP Client is used
*/
public TestRestTemplate(HttpClientOption... httpClientOptions) {
super(httpClientOptions);
super(options(httpClientOptions));
}
/**
* Create a new {@link TestRestTemplate} instance with the specified credentials.
* @param username the username to use (or {@code null})
* @param password the password (or {@code null})
* @param httpClientOptions client options to use if the Apache HTTP Client is used
* Create a new {@link TestRestTemplate} instance with the specified
* credentials.
*
* @param username
* the username to use (or {@code null})
* @param password
* the password (or {@code null})
* @param httpClientOptions
* client options to use if the Apache HTTP Client is used
*/
public TestRestTemplate(String username, String password,
HttpClientOption... httpClientOptions) {
super(username, password, httpClientOptions);
public TestRestTemplate(String username, String password, HttpClientOption... httpClientOptions) {
super(username, password, options(httpClientOptions));
}
private static org.springframework.boot.test.web.client.TestRestTemplate.HttpClientOption[] options(
HttpClientOption[] httpClientOptions) {
org.springframework.boot.test.web.client.TestRestTemplate.HttpClientOption[] result = new org.springframework.boot.test.web.client.TestRestTemplate.HttpClientOption[httpClientOptions.length];
for (int i = 0; i < httpClientOptions.length; i++) {
HttpClientOption httpClientOption = httpClientOptions[i];
result[i] = org.springframework.boot.test.web.client.TestRestTemplate.HttpClientOption.valueOf(httpClientOption.name());
}
return result;
}
/**
* Options used to customize the Apache Http Client if it is used.
*/
public enum HttpClientOption {
/**
* Enable cookies.
*/
ENABLE_COOKIES,
/**
* Enable redirects.
*/
ENABLE_REDIRECTS
}
}

View File

@ -0,0 +1,15 @@
package org.springframework.boot.test;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
public class TestRestTemplateTests {
@Test
public void canCreateTemplateFromOwnOptions() {
TestRestTemplate template = new TestRestTemplate(TestRestTemplate.HttpClientOption.ENABLE_REDIRECTS);
assertThat(template).isNotNull();
}
}