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.
pull/5883/head
Dave Syer 9 years ago
parent b97ebdd17f
commit be398741e1

@ -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
*/
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 {
/**
* 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
* Enable cookies.
*/
public TestRestTemplate(String username, String password,
HttpClientOption... httpClientOptions) {
super(username, password, httpClientOptions);
ENABLE_COOKIES,
/**
* Enable redirects.
*/
ENABLE_REDIRECTS
}
}

@ -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();
}
}
Loading…
Cancel
Save