@@ -20,6 +20,8 @@ import kotlinx.serialization.Serializable
2020import  org.assertj.core.api.Assertions 
2121import  org.junit.jupiter.api.Test 
2222import  org.springframework.core.MethodParameter 
23+ import  org.springframework.http.RequestEntity 
24+ import  org.springframework.http.ResponseEntity 
2325import  org.springframework.http.converter.StringHttpMessageConverter 
2426import  org.springframework.http.converter.json.KotlinSerializationJsonHttpMessageConverter 
2527import  org.springframework.validation.beanvalidation.LocalValidatorFactoryBean 
@@ -68,6 +70,22 @@ class RequestResponseBodyMethodProcessorKotlinTests {
6870			.contains(" \" value\" :\" foo\" " 
6971	}
7072
73+ 	@Test
74+ 	fun  writeEntityWithKotlinSerializationJsonMessageConverter () {
75+ 		val  method =  SampleController ::writeMessageEntity::javaMethod.get()!! 
76+ 		val  handlerMethod =  HandlerMethod (SampleController (), method)
77+ 		val  methodReturnType =  handlerMethod.returnType
78+ 
79+ 		val  converters =  listOf (KotlinSerializationJsonHttpMessageConverter ())
80+ 		val  processor =  RequestResponseBodyMethodProcessor (converters, null , listOf (KotlinResponseBodyAdvice ()))
81+ 
82+ 		val  returnValue:  Any?  =  SampleController ().writeMessageEntity().body
83+ 		processor.handleReturnValue(returnValue, methodReturnType, this .container, this .request)
84+ 
85+ 		Assertions .assertThat(this .servletResponse.contentAsString)
86+ 			.contains(" \" value\" :\" foo\" " 
87+ 	}
88+ 
7189	@Test
7290	fun  writeGenericTypeWithKotlinSerializationJsonMessageConverter () {
7391		val  method =  SampleController ::writeMessages::javaMethod.get()!! 
@@ -118,6 +136,24 @@ class RequestResponseBodyMethodProcessorKotlinTests {
118136		Assertions .assertThat(result).isEqualTo(Message (" foo" 
119137	}
120138
139+ 	@Test
140+ 	@Suppress(" UNCHECKED_CAST" 
141+ 	fun  readEntityWithKotlinSerializationJsonMessageConverter () {
142+ 		val  content =  " {\" value\"  : \" foo\" }" 
143+ 		this .servletRequest.setContent(content.toByteArray(StandardCharsets .UTF_8 ))
144+ 		this .servletRequest.setContentType(" application/json" 
145+ 
146+ 		val  converters =  listOf (StringHttpMessageConverter (), KotlinSerializationJsonHttpMessageConverter ())
147+ 		val  processor =  RequestResponseBodyMethodProcessor (converters, null , listOf (KotlinRequestBodyAdvice ()))
148+ 
149+ 		val  method =  SampleController ::readMessageEntity::javaMethod.get()!! 
150+ 		val  methodParameter =  MethodParameter (method, 0 )
151+ 
152+ 		val  result =  processor.resolveArgument(methodParameter, container, request, factory) as  Message 
153+ 
154+ 		Assertions .assertThat(result).isEqualTo(Message (" foo" 
155+ 	}
156+ 
121157	@Suppress(" UNCHECKED_CAST" 
122158	@Test
123159	fun  readGenericTypeWithKotlinSerializationJsonMessageConverter () {
@@ -161,6 +197,10 @@ class RequestResponseBodyMethodProcessorKotlinTests {
161197		@ResponseBody
162198		fun  writeMessage () =  Message (" foo" 
163199
200+ 		@RequestMapping
201+ 		@ResponseBody
202+ 		fun  writeMessageEntity () =  ResponseEntity .ok(Message (" foo" 
203+ 
164204		@RequestMapping
165205		@ResponseBody
166206		fun  writeMessages () =  listOf (Message (" foo" Message (" bar" 
@@ -169,6 +209,10 @@ class RequestResponseBodyMethodProcessorKotlinTests {
169209		@ResponseBody
170210		fun  readMessage (message :  Message ) =  message.value
171211
212+ 		@RequestMapping
213+ 		@ResponseBody
214+ 		fun  readMessageEntity (entity :  RequestEntity <Message >) =  entity.body!! .value
215+ 
172216		@RequestMapping
173217		@ResponseBody
174218		fun  readMessages (messages :  List <Message >) =  messages.map { it.value }.reduce { acc, string ->  " $acc  $string " 
0 commit comments