@@ -20,6 +20,8 @@ import kotlinx.serialization.Serializable
20
20
import org.assertj.core.api.Assertions
21
21
import org.junit.jupiter.api.Test
22
22
import org.springframework.core.MethodParameter
23
+ import org.springframework.http.RequestEntity
24
+ import org.springframework.http.ResponseEntity
23
25
import org.springframework.http.converter.StringHttpMessageConverter
24
26
import org.springframework.http.converter.json.KotlinSerializationJsonHttpMessageConverter
25
27
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean
@@ -68,6 +70,22 @@ class RequestResponseBodyMethodProcessorKotlinTests {
68
70
.contains(" \" value\" :\" foo\" " )
69
71
}
70
72
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
+
71
89
@Test
72
90
fun writeGenericTypeWithKotlinSerializationJsonMessageConverter () {
73
91
val method = SampleController ::writeMessages::javaMethod.get()!!
@@ -118,6 +136,24 @@ class RequestResponseBodyMethodProcessorKotlinTests {
118
136
Assertions .assertThat(result).isEqualTo(Message (" foo" ))
119
137
}
120
138
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
+
121
157
@Suppress(" UNCHECKED_CAST" )
122
158
@Test
123
159
fun readGenericTypeWithKotlinSerializationJsonMessageConverter () {
@@ -161,6 +197,10 @@ class RequestResponseBodyMethodProcessorKotlinTests {
161
197
@ResponseBody
162
198
fun writeMessage () = Message (" foo" )
163
199
200
+ @RequestMapping
201
+ @ResponseBody
202
+ fun writeMessageEntity () = ResponseEntity .ok(Message (" foo" ))
203
+
164
204
@RequestMapping
165
205
@ResponseBody
166
206
fun writeMessages () = listOf (Message (" foo" ), Message (" bar" ))
@@ -169,6 +209,10 @@ class RequestResponseBodyMethodProcessorKotlinTests {
169
209
@ResponseBody
170
210
fun readMessage (message : Message ) = message.value
171
211
212
+ @RequestMapping
213
+ @ResponseBody
214
+ fun readMessageEntity (entity : RequestEntity <Message >) = entity.body!! .value
215
+
172
216
@RequestMapping
173
217
@ResponseBody
174
218
fun readMessages (messages : List <Message >) = messages.map { it.value }.reduce { acc, string -> " $acc $string " }
0 commit comments