Add ServerResponse extensions for json, xml and html

Issue: SPR-17017
This commit is contained in:
Sebastien Deleuze
2018-07-06 14:24:07 +02:00
parent 2cd006923c
commit fd69c90fcb
2 changed files with 41 additions and 2 deletions

View File

@@ -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)

View File

@@ -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
}