Browse Source

Fix RestOperations extensions parameters nullability

Issue: SPR-16328
pull/1628/merge
sdeleuze 8 years ago
parent
commit
d2616b7996
  1. 28
      spring-web/src/main/kotlin/org/springframework/web/client/RestOperationsExtensions.kt
  2. 40
      spring-web/src/test/kotlin/org/springframework/web/client/RestOperationsExtensionsTests.kt

28
spring-web/src/main/kotlin/org/springframework/web/client/RestOperationsExtensions.kt

@ -115,7 +115,8 @@ inline fun <reified T: Any> RestOperations.getForEntity(url: String, uriVariable @@ -115,7 +115,8 @@ inline fun <reified T: Any> RestOperations.getForEntity(url: String, uriVariable
* @since 5.0.2
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.patchForObject(url: String, request: Any, vararg uriVariables: Any): T? =
inline fun <reified T: Any> RestOperations.patchForObject(url: String, request: Any? = null,
vararg uriVariables: Any): T? =
patchForObject(url, request, T::class.java, *uriVariables)
/**
@ -128,7 +129,8 @@ inline fun <reified T: Any> RestOperations.patchForObject(url: String, request: @@ -128,7 +129,8 @@ inline fun <reified T: Any> RestOperations.patchForObject(url: String, request:
* @since 5.0.2
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.patchForObject(url: String, request: Any, uriVariables: Map<String, *>): T? =
inline fun <reified T: Any> RestOperations.patchForObject(url: String, request: Any? = null,
uriVariables: Map<String, *>): T? =
patchForObject(url, request, T::class.java, uriVariables)
/**
@ -141,7 +143,7 @@ inline fun <reified T: Any> RestOperations.patchForObject(url: String, request: @@ -141,7 +143,7 @@ inline fun <reified T: Any> RestOperations.patchForObject(url: String, request:
* @since 5.0.2
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.patchForObject(url: URI, request: Any): T? =
inline fun <reified T: Any> RestOperations.patchForObject(url: URI, request: Any? = null): T? =
patchForObject(url, request, T::class.java)
/**
@ -155,7 +157,8 @@ inline fun <reified T: Any> RestOperations.patchForObject(url: URI, request: Any @@ -155,7 +157,8 @@ inline fun <reified T: Any> RestOperations.patchForObject(url: URI, request: Any
* @since 5.0
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.postForObject(url: String, request: Any, vararg uriVariables: Any): T? =
inline fun <reified T: Any> RestOperations.postForObject(url: String, request: Any? = null,
vararg uriVariables: Any): T? =
postForObject(url, request, T::class.java, *uriVariables)
/**
@ -169,7 +172,8 @@ inline fun <reified T: Any> RestOperations.postForObject(url: String, request: A @@ -169,7 +172,8 @@ inline fun <reified T: Any> RestOperations.postForObject(url: String, request: A
* @since 5.0
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.postForObject(url: String, request: Any, uriVariables: Map<String, *>): T? =
inline fun <reified T: Any> RestOperations.postForObject(url: String, request: Any? = null,
uriVariables: Map<String, *>): T? =
postForObject(url, request, T::class.java, uriVariables)
/**
@ -183,7 +187,7 @@ inline fun <reified T: Any> RestOperations.postForObject(url: String, request: A @@ -183,7 +187,7 @@ inline fun <reified T: Any> RestOperations.postForObject(url: String, request: A
* @since 5.0
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.postForObject(url: URI, request: Any): T? =
inline fun <reified T: Any> RestOperations.postForObject(url: URI, request: Any? = null): T? =
postForObject(url, request, T::class.java)
/**
@ -197,7 +201,7 @@ inline fun <reified T: Any> RestOperations.postForObject(url: URI, request: Any) @@ -197,7 +201,7 @@ inline fun <reified T: Any> RestOperations.postForObject(url: URI, request: Any)
* @since 5.0
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.postForEntity(url: String, request: Any,
inline fun <reified T: Any> RestOperations.postForEntity(url: String, request: Any? = null,
vararg uriVariables: Any): ResponseEntity<T> =
postForEntity(url, request, T::class.java, *uriVariables)
@ -212,7 +216,7 @@ inline fun <reified T: Any> RestOperations.postForEntity(url: String, request: A @@ -212,7 +216,7 @@ inline fun <reified T: Any> RestOperations.postForEntity(url: String, request: A
* @since 5.0
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.postForEntity(url: String, request: Any,
inline fun <reified T: Any> RestOperations.postForEntity(url: String, request: Any? = null,
uriVariables: Map<String, *>): ResponseEntity<T> =
postForEntity(url, request, T::class.java, uriVariables)
@ -227,7 +231,7 @@ inline fun <reified T: Any> RestOperations.postForEntity(url: String, request: A @@ -227,7 +231,7 @@ inline fun <reified T: Any> RestOperations.postForEntity(url: String, request: A
* @since 5.0
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.postForEntity(url: URI, request: Any): ResponseEntity<T> =
inline fun <reified T: Any> RestOperations.postForEntity(url: URI, request: Any? = null): ResponseEntity<T> =
postForEntity(url, request, T::class.java)
/**
@ -241,7 +245,7 @@ inline fun <reified T: Any> RestOperations.postForEntity(url: URI, request: Any) @@ -241,7 +245,7 @@ inline fun <reified T: Any> RestOperations.postForEntity(url: URI, request: Any)
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.exchange(url: String, method: HttpMethod,
requestEntity: HttpEntity<*>, vararg uriVariables: Any): ResponseEntity<T> =
requestEntity: HttpEntity<*>? = null, vararg uriVariables: Any): ResponseEntity<T> =
exchange(url, method, requestEntity, object : ParameterizedTypeReference<T>() {}, *uriVariables)
/**
@ -255,7 +259,7 @@ inline fun <reified T: Any> RestOperations.exchange(url: String, method: HttpMet @@ -255,7 +259,7 @@ inline fun <reified T: Any> RestOperations.exchange(url: String, method: HttpMet
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.exchange(url: String, method: HttpMethod,
requestEntity: HttpEntity<*>, uriVariables: Map<String, *>): ResponseEntity<T> =
requestEntity: HttpEntity<*>? = null, uriVariables: Map<String, *>): ResponseEntity<T> =
exchange(url, method, requestEntity, object : ParameterizedTypeReference<T>() {}, uriVariables)
/**
@ -269,7 +273,7 @@ inline fun <reified T: Any> RestOperations.exchange(url: String, method: HttpMet @@ -269,7 +273,7 @@ inline fun <reified T: Any> RestOperations.exchange(url: String, method: HttpMet
*/
@Throws(RestClientException::class)
inline fun <reified T: Any> RestOperations.exchange(url: URI, method: HttpMethod,
requestEntity: HttpEntity<*>): ResponseEntity<T> =
requestEntity: HttpEntity<*>? = null): ResponseEntity<T> =
exchange(url, method, requestEntity, object : ParameterizedTypeReference<T>() {})
/**

40
spring-web/src/test/kotlin/org/springframework/web/client/RestOperationsExtensionsTests.kt

@ -112,13 +112,20 @@ class RestOperationsExtensionsTests { @@ -112,13 +112,20 @@ class RestOperationsExtensionsTests {
}
@Test
fun `patchForObject with reified type parameters`() {
fun `patchForObject with reified type parameters and String`() {
val url = "https://spring.io"
val body: Any = "body"
template.patchForObject<Foo>(url, body)
verify(template, times(1)).patchForObject(url, body, Foo::class.java)
}
@Test
fun `patchForObject with reified type parameters`() {
val url = "https://spring.io"
template.patchForObject<Foo>(url)
verify(template, times(1)).patchForObject(url, null, Foo::class.java)
}
@Test
fun `postForObject with reified type parameters, String and varargs`() {
val url = "https://spring.io"
@ -139,13 +146,20 @@ class RestOperationsExtensionsTests { @@ -139,13 +146,20 @@ class RestOperationsExtensionsTests {
}
@Test
fun `postForObject with reified type parameters`() {
fun `postForObject with reified type parameters and String`() {
val url = "https://spring.io"
val body: Any = "body"
template.postForObject<Foo>(url, body)
verify(template, times(1)).postForObject(url, body, Foo::class.java)
}
@Test
fun `postForObject with reified type parameters`() {
val url = "https://spring.io"
template.postForObject<Foo>(url)
verify(template, times(1)).postForObject(url, null, Foo::class.java)
}
@Test
fun `postForEntity with reified type parameters, String and varargs`() {
val url = "https://spring.io"
@ -166,13 +180,20 @@ class RestOperationsExtensionsTests { @@ -166,13 +180,20 @@ class RestOperationsExtensionsTests {
}
@Test
fun `postForEntity with reified type parameters`() {
fun `postForEntity with reified type parameters and String`() {
val url = "https://spring.io"
val body: Any = "body"
template.postForEntity<Foo>(url, body)
verify(template, times(1)).postForEntity(url, body, Foo::class.java)
}
@Test
fun `postForEntity with reified type parameters`() {
val url = "https://spring.io"
template.postForEntity<Foo>(url)
verify(template, times(1)).postForEntity(url, null, Foo::class.java)
}
@Test
fun `exchange with reified type parameters, String, HttpMethod, HttpEntity and varargs`() {
val url = "https://spring.io"
@ -197,7 +218,7 @@ class RestOperationsExtensionsTests { @@ -197,7 +218,7 @@ class RestOperationsExtensionsTests {
}
@Test
fun `exchange with reified type parameters, String, HttpMethod, HttpEntity`() {
fun `exchange with reified type parameters, String, HttpMethod and HttpEntity`() {
val url = "https://spring.io"
val method = HttpMethod.GET
val entity = mock<HttpEntity<Foo>>()
@ -207,7 +228,16 @@ class RestOperationsExtensionsTests { @@ -207,7 +228,16 @@ class RestOperationsExtensionsTests {
}
@Test
fun `exchange with reified type parameters, String, HttpEntity`() {
fun `exchange with reified type parameters, String and HttpMethod`() {
val url = "https://spring.io"
val method = HttpMethod.GET
template.exchange<List<Foo>>(url, method)
verify(template, times(1)).exchange(url, method, null,
object : ParameterizedTypeReference<List<Foo>>() {})
}
@Test
fun `exchange with reified type parameters, String and HttpEntity`() {
val entity = mock<RequestEntity<Foo>>()
template.exchange<List<Foo>>(entity)
verify(template, times(1)).exchange(entity,

Loading…
Cancel
Save