Add ServerResponse extensions for json, xml and html

Issue: SPR-17017
master
Sebastien Deleuze 6 years ago
parent 2cd006923c
commit fd69c90fcb
  1. 23
      spring-webflux/src/main/kotlin/org/springframework/web/reactive/function/server/ServerResponseExtensions.kt
  2. 20
      spring-webflux/src/test/kotlin/org/springframework/web/reactive/function/server/ServerResponseExtensionsTests.kt

@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -42,3 +42,24 @@ inline fun <reified T : Any> ServerResponse.BodyBuilder.body(publisher: Publishe
*/
inline fun <reified T : Any> ServerResponse.BodyBuilder.bodyToServerSentEvents(publisher: Publisher<T>): Mono<ServerResponse> =
contentType(MediaType.TEXT_EVENT_STREAM).body(publisher, object : ParameterizedTypeReference<T>() {})
/**
* Shortcut for setting [MediaType.APPLICATION_JSON_UTF8] `Content-Type` header.
* @author Sebastien Deleuze
* @since 5.1
*/
fun ServerResponse.BodyBuilder.json() = contentType(MediaType.APPLICATION_JSON_UTF8)
/**
* Shortcut for setting [MediaType.APPLICATION_XML] `Content-Type` header.
* @author Sebastien Deleuze
* @since 5.1
*/
fun ServerResponse.BodyBuilder.xml() = contentType(MediaType.APPLICATION_XML)
/**
* Shortcut for setting [MediaType.TEXT_HTML] `Content-Type` header.
* @author Sebastien Deleuze
* @since 5.1
*/
fun ServerResponse.BodyBuilder.html() = contentType(MediaType.TEXT_HTML)

@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -53,5 +53,23 @@ class ServerResponseExtensionsTests {
verify(bodyBuilder, times(1)).contentType(TEXT_EVENT_STREAM)
}
@Test
fun `BodyBuilder#json`() {
bodyBuilder.json()
verify(bodyBuilder, times(1)).contentType(APPLICATION_JSON_UTF8)
}
@Test
fun `BodyBuilder#xml`() {
bodyBuilder.xml()
verify(bodyBuilder, times(1)).contentType(APPLICATION_XML)
}
@Test
fun `BodyBuilder#html`() {
bodyBuilder.html()
verify(bodyBuilder, times(1)).contentType(TEXT_HTML)
}
class Foo
}

Loading…
Cancel
Save