[Java] Return content type on default spring reactive responses (#10099)

* Return content type on default spring reactive responses

* Return content type on default spring reactive responses

* Refactor apiUtil and use request mediaType

Co-authored-by: Joshua Bridge <jbridg12@jaguarlandrover.com>
This commit is contained in:
Josh Bridge 2021-09-02 04:19:13 +01:00 committed by GitHub
parent d68d65ce00
commit 6331eb6293
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 39 additions and 23 deletions

View File

@ -2,7 +2,10 @@ package {{apiPackage}};
{{#reactive}}
import java.nio.charset.StandardCharsets;
import org.springframework.core.io.buffer.DefaultDataBuffer;
import org.springframework.core.io.buffer.DefaultDataBufferFactory;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
{{/reactive}}
@ -27,8 +30,13 @@ public class ApiUtil {
}
{{/reactive}}
{{#reactive}}
public static Mono<Void> getExampleResponse(ServerWebExchange exchange, String example) {
return exchange.getResponse().writeWith(Mono.just(new DefaultDataBufferFactory().wrap(example.getBytes(StandardCharsets.UTF_8))));
public static Mono<Void> getExampleResponse(ServerWebExchange exchange, MediaType mediaType, String example) {
ServerHttpResponse response = exchange.getResponse();
response.getHeaders().setContentType(mediaType);
byte[] exampleBytes = example.getBytes(StandardCharsets.UTF_8);
DefaultDataBuffer data = new DefaultDataBufferFactory().wrap(exampleBytes);
return response.writeWith(Mono.just(data));
}
{{/reactive}}
}

View File

@ -38,7 +38,7 @@ Mono<Void> result = Mono.empty();
{{/-first}}
if (mediaType.isCompatibleWith(MediaType.valueOf("{{{contentType}}}"))) {
String exampleString = {{>exampleString}};
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
{{#-last}}

View File

@ -42,7 +42,7 @@ public interface AnotherFakeApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"client\" : \"client\" }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}

View File

@ -1,12 +1,20 @@
package org.openapitools.api;
import java.nio.charset.StandardCharsets;
import org.springframework.core.io.buffer.DefaultDataBuffer;
import org.springframework.core.io.buffer.DefaultDataBufferFactory;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
public class ApiUtil {
public static Mono<Void> getExampleResponse(ServerWebExchange exchange, String example) {
return exchange.getResponse().writeWith(Mono.just(new DefaultDataBufferFactory().wrap(example.getBytes(StandardCharsets.UTF_8))));
public static Mono<Void> getExampleResponse(ServerWebExchange exchange, MediaType mediaType, String example) {
ServerHttpResponse response = exchange.getResponse();
response.getHeaders().setContentType(mediaType);
byte[] exampleBytes = example.getBytes(StandardCharsets.UTF_8);
DefaultDataBuffer data = new DefaultDataBufferFactory().wrap(exampleBytes);
return response.writeWith(Mono.just(data));
}
}

View File

@ -83,7 +83,7 @@ public interface FakeApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("*/*"))) {
String exampleString = "{ \"my_string\" : \"my_string\", \"my_number\" : 0.8008281904610115, \"my_boolean\" : true }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}
@ -171,7 +171,7 @@ public interface FakeApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"client\" : \"client\" }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}
@ -353,7 +353,7 @@ public interface FakeApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"code\" : 0, \"type\" : \"type\", \"message\" : \"message\" }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}

View File

@ -42,7 +42,7 @@ public interface FakeClassnameTestApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"client\" : \"client\" }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}

View File

@ -79,12 +79,12 @@ public interface PetApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ], \"name\" : \"doggie\", \"id\" : 0, \"category\" : { \"name\" : \"default-name\", \"id\" : 6 }, \"tags\" : [ { \"name\" : \"name\", \"id\" : 1 }, { \"name\" : \"name\", \"id\" : 1 } ], \"status\" : \"available\" }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
if (mediaType.isCompatibleWith(MediaType.valueOf("application/xml"))) {
String exampleString = "<Pet> <id>123456789</id> <name>doggie</name> <photoUrls> <photoUrls>aeiou</photoUrls> </photoUrls> <tags> </tags> <status>aeiou</status> </Pet>";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}
@ -109,12 +109,12 @@ public interface PetApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ], \"name\" : \"doggie\", \"id\" : 0, \"category\" : { \"name\" : \"default-name\", \"id\" : 6 }, \"tags\" : [ { \"name\" : \"name\", \"id\" : 1 }, { \"name\" : \"name\", \"id\" : 1 } ], \"status\" : \"available\" }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
if (mediaType.isCompatibleWith(MediaType.valueOf("application/xml"))) {
String exampleString = "<Pet> <id>123456789</id> <name>doggie</name> <photoUrls> <photoUrls>aeiou</photoUrls> </photoUrls> <tags> </tags> <status>aeiou</status> </Pet>";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}
@ -139,12 +139,12 @@ public interface PetApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"photoUrls\" : [ \"photoUrls\", \"photoUrls\" ], \"name\" : \"doggie\", \"id\" : 0, \"category\" : { \"name\" : \"default-name\", \"id\" : 6 }, \"tags\" : [ { \"name\" : \"name\", \"id\" : 1 }, { \"name\" : \"name\", \"id\" : 1 } ], \"status\" : \"available\" }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
if (mediaType.isCompatibleWith(MediaType.valueOf("application/xml"))) {
String exampleString = "<Pet> <id>123456789</id> <name>doggie</name> <photoUrls> <photoUrls>aeiou</photoUrls> </photoUrls> <tags> </tags> <status>aeiou</status> </Pet>";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}
@ -207,7 +207,7 @@ public interface PetApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"code\" : 0, \"type\" : \"type\", \"message\" : \"message\" }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}

View File

@ -76,12 +76,12 @@ public interface StoreApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"petId\" : 6, \"quantity\" : 1, \"id\" : 0, \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\", \"complete\" : false, \"status\" : \"placed\" }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
if (mediaType.isCompatibleWith(MediaType.valueOf("application/xml"))) {
String exampleString = "<Order> <id>123456789</id> <petId>123456789</petId> <quantity>123</quantity> <shipDate>2000-01-23T04:56:07.000Z</shipDate> <status>aeiou</status> <complete>true</complete> </Order>";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}
@ -104,12 +104,12 @@ public interface StoreApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"petId\" : 6, \"quantity\" : 1, \"id\" : 0, \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\", \"complete\" : false, \"status\" : \"placed\" }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
if (mediaType.isCompatibleWith(MediaType.valueOf("application/xml"))) {
String exampleString = "<Order> <id>123456789</id> <petId>123456789</petId> <quantity>123</quantity> <shipDate>2000-01-23T04:56:07.000Z</shipDate> <status>aeiou</status> <complete>true</complete> </Order>";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}

View File

@ -107,12 +107,12 @@ public interface UserApiDelegate {
for (MediaType mediaType : exchange.getRequest().getHeaders().getAccept()) {
if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
String exampleString = "{ \"firstName\" : \"firstName\", \"lastName\" : \"lastName\", \"password\" : \"password\", \"userStatus\" : 6, \"phone\" : \"phone\", \"id\" : 0, \"email\" : \"email\", \"username\" : \"username\" }";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
if (mediaType.isCompatibleWith(MediaType.valueOf("application/xml"))) {
String exampleString = "<User> <id>123456789</id> <username>aeiou</username> <firstName>aeiou</firstName> <lastName>aeiou</lastName> <email>aeiou</email> <password>aeiou</password> <phone>aeiou</phone> <userStatus>123</userStatus> </User>";
result = ApiUtil.getExampleResponse(exchange, exampleString);
result = ApiUtil.getExampleResponse(exchange, mediaType, exampleString);
break;
}
}