[Play Framework] Update Play Framework Generator to latest version (#7860)

* First iteration to support new mechanism that needs to have the handle of the result.

* Most of the samples now build except "async". Also, everything is messed up.. need to understand the mustache way to handle this.

* New version to support play 2.8

* Fix conflict

* Fix error when multiple file in forms
This commit is contained in:
Jean-François Côté
2020-11-02 21:48:29 -05:00
committed by GitHub
parent ebf2f2e30f
commit 998e0fdaa2
127 changed files with 2720 additions and 1276 deletions

View File

@@ -16,6 +16,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.inject.Inject;
import java.io.File;
import play.api.libs.Files.TemporaryFile;
import openapitools.OpenAPIUtils;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -26,7 +27,6 @@ import openapitools.OpenAPIUtils.ApiAction;
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaPlayFrameworkCodegen")
public class PetApiController extends Controller {
private final PetApiControllerImpInterface imp;
private final ObjectMapper mapper;
private final Config configuration;
@@ -38,7 +38,6 @@ public class PetApiController extends Controller {
this.configuration = configuration;
}
@ApiAction
public Result addPet(Http.Request request) throws Exception {
JsonNode nodebody = request.body().asJson();
@@ -51,8 +50,7 @@ public class PetApiController extends Controller {
} else {
throw new IllegalArgumentException("'body' parameter is required");
}
imp.addPet(request, body);
return ok();
return imp.addPetHttp(request, body);
}
@ApiAction
@@ -64,8 +62,7 @@ public class PetApiController extends Controller {
} else {
apiKey = null;
}
imp.deletePet(request, petId, apiKey);
return ok();
return imp.deletePetHttp(request, petId, apiKey);
}
@ApiAction
@@ -82,14 +79,7 @@ public class PetApiController extends Controller {
status.add(curParam);
}
}
List<Pet> obj = imp.findPetsByStatus(request, status);
if (configuration.getBoolean("useOutputBeanValidation")) {
for (Pet curItem : obj) {
OpenAPIUtils.validate(curItem);
}
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
return imp.findPetsByStatusHttp(request, status);
}
@ApiAction
@@ -106,24 +96,12 @@ public class PetApiController extends Controller {
tags.add(curParam);
}
}
List<Pet> obj = imp.findPetsByTags(request, tags);
if (configuration.getBoolean("useOutputBeanValidation")) {
for (Pet curItem : obj) {
OpenAPIUtils.validate(curItem);
}
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
return imp.findPetsByTagsHttp(request, tags);
}
@ApiAction
public Result getPetById(Http.Request request, Long petId) throws Exception {
Pet obj = imp.getPetById(request, petId);
if (configuration.getBoolean("useOutputBeanValidation")) {
OpenAPIUtils.validate(obj);
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
return imp.getPetByIdHttp(request, petId);
}
@ApiAction
@@ -138,8 +116,7 @@ public class PetApiController extends Controller {
} else {
throw new IllegalArgumentException("'body' parameter is required");
}
imp.updatePet(request, body);
return ok();
return imp.updatePetHttp(request, body);
}
@ApiAction
@@ -158,8 +135,7 @@ public class PetApiController extends Controller {
} else {
status = null;
}
imp.updatePetWithForm(request, petId, name, status);
return ok();
return imp.updatePetWithFormHttp(request, petId, name, status);
}
@ApiAction
@@ -171,12 +147,9 @@ public class PetApiController extends Controller {
} else {
additionalMetadata = null;
}
Http.MultipartFormData.FilePart file = request.body().asMultipartFormData().getFile("file");
ModelApiResponse obj = imp.uploadFile(request, petId, additionalMetadata, file);
if (configuration.getBoolean("useOutputBeanValidation")) {
OpenAPIUtils.validate(obj);
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
Http.MultipartFormData<TemporaryFile> bodyfile = request.body().asMultipartFormData();
Http.MultipartFormData.FilePart<TemporaryFile> file = bodyfile.getFile("file");
return imp.uploadFileHttp(request, petId, additionalMetadata, file);
}
}

View File

@@ -10,9 +10,10 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.io.FileInputStream;
import play.api.libs.Files.TemporaryFile;
import javax.validation.constraints.*;
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaPlayFrameworkCodegen")
public class PetApiControllerImp implements PetApiControllerImpInterface {
public class PetApiControllerImp extends PetApiControllerImpInterface {
@Override
public void addPet(Http.Request request, Pet body) throws Exception {
//Do your magic!!!
@@ -52,7 +53,7 @@ public class PetApiControllerImp implements PetApiControllerImpInterface {
}
@Override
public ModelApiResponse uploadFile(Http.Request request, Long petId, String additionalMetadata, Http.MultipartFormData.FilePart file) throws Exception {
public ModelApiResponse uploadFile(Http.Request request, Long petId, String additionalMetadata, Http.MultipartFormData.FilePart<TemporaryFile> file) throws Exception {
//Do your magic!!!
return new ModelApiResponse();
}

View File

@@ -4,29 +4,109 @@ import java.io.InputStream;
import apimodels.ModelApiResponse;
import apimodels.Pet;
import com.google.inject.Inject;
import com.typesafe.config.Config;
import play.mvc.Controller;
import play.mvc.Http;
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import play.mvc.Result;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import openapitools.OpenAPIUtils;
import static play.mvc.Results.ok;
import play.api.libs.Files.TemporaryFile;
import javax.validation.constraints.*;
@SuppressWarnings("RedundantThrows")
public interface PetApiControllerImpInterface {
void addPet(Http.Request request, Pet body) throws Exception;
public abstract class PetApiControllerImpInterface {
@Inject private Config configuration;
private ObjectMapper mapper = new ObjectMapper();
void deletePet(Http.Request request, Long petId, String apiKey) throws Exception;
public Result addPetHttp(Http.Request request, Pet body) throws Exception {
addPet(request, body);
return ok();
List<Pet> findPetsByStatus(Http.Request request, @NotNull List<String> status) throws Exception;
}
List<Pet> findPetsByTags(Http.Request request, @NotNull List<String> tags) throws Exception;
public abstract void addPet(Http.Request request, Pet body) throws Exception;
Pet getPetById(Http.Request request, Long petId) throws Exception;
public Result deletePetHttp(Http.Request request, Long petId, String apiKey) throws Exception {
deletePet(request, petId, apiKey);
return ok();
void updatePet(Http.Request request, Pet body) throws Exception;
}
void updatePetWithForm(Http.Request request, Long petId, String name, String status) throws Exception;
public abstract void deletePet(Http.Request request, Long petId, String apiKey) throws Exception;
ModelApiResponse uploadFile(Http.Request request, Long petId, String additionalMetadata, Http.MultipartFormData.FilePart file) throws Exception;
public Result findPetsByStatusHttp(Http.Request request, @NotNull List<String> status) throws Exception {
List<Pet> obj = findPetsByStatus(request, status);
if (configuration.getBoolean("useOutputBeanValidation")) {
for (Pet curItem : obj) {
OpenAPIUtils.validate(curItem);
}
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
}
public abstract List<Pet> findPetsByStatus(Http.Request request, @NotNull List<String> status) throws Exception;
public Result findPetsByTagsHttp(Http.Request request, @NotNull List<String> tags) throws Exception {
List<Pet> obj = findPetsByTags(request, tags);
if (configuration.getBoolean("useOutputBeanValidation")) {
for (Pet curItem : obj) {
OpenAPIUtils.validate(curItem);
}
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
}
public abstract List<Pet> findPetsByTags(Http.Request request, @NotNull List<String> tags) throws Exception;
public Result getPetByIdHttp(Http.Request request, Long petId) throws Exception {
Pet obj = getPetById(request, petId);
if (configuration.getBoolean("useOutputBeanValidation")) {
OpenAPIUtils.validate(obj);
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
}
public abstract Pet getPetById(Http.Request request, Long petId) throws Exception;
public Result updatePetHttp(Http.Request request, Pet body) throws Exception {
updatePet(request, body);
return ok();
}
public abstract void updatePet(Http.Request request, Pet body) throws Exception;
public Result updatePetWithFormHttp(Http.Request request, Long petId, String name, String status) throws Exception {
updatePetWithForm(request, petId, name, status);
return ok();
}
public abstract void updatePetWithForm(Http.Request request, Long petId, String name, String status) throws Exception;
public Result uploadFileHttp(Http.Request request, Long petId, String additionalMetadata, Http.MultipartFormData.FilePart<TemporaryFile> file) throws Exception {
ModelApiResponse obj = uploadFile(request, petId, additionalMetadata, file);
if (configuration.getBoolean("useOutputBeanValidation")) {
OpenAPIUtils.validate(obj);
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
}
public abstract ModelApiResponse uploadFile(Http.Request request, Long petId, String additionalMetadata, Http.MultipartFormData.FilePart<TemporaryFile> file) throws Exception;
}

View File

@@ -15,6 +15,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.inject.Inject;
import java.io.File;
import play.api.libs.Files.TemporaryFile;
import openapitools.OpenAPIUtils;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -25,7 +26,6 @@ import openapitools.OpenAPIUtils.ApiAction;
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaPlayFrameworkCodegen")
public class StoreApiController extends Controller {
private final StoreApiControllerImpInterface imp;
private final ObjectMapper mapper;
private final Config configuration;
@@ -37,28 +37,19 @@ public class StoreApiController extends Controller {
this.configuration = configuration;
}
@ApiAction
public Result deleteOrder(Http.Request request, String orderId) throws Exception {
imp.deleteOrder(request, orderId);
return ok();
return imp.deleteOrderHttp(request, orderId);
}
@ApiAction
public Result getInventory(Http.Request request) throws Exception {
Map<String, Integer> obj = imp.getInventory(request);
JsonNode result = mapper.valueToTree(obj);
return ok(result);
return imp.getInventoryHttp(request);
}
@ApiAction
public Result getOrderById(Http.Request request, @Min(1) @Max(5)Long orderId) throws Exception {
Order obj = imp.getOrderById(request, orderId);
if (configuration.getBoolean("useOutputBeanValidation")) {
OpenAPIUtils.validate(obj);
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
return imp.getOrderByIdHttp(request, orderId);
}
@ApiAction
@@ -73,11 +64,7 @@ public class StoreApiController extends Controller {
} else {
throw new IllegalArgumentException("'body' parameter is required");
}
Order obj = imp.placeOrder(request, body);
if (configuration.getBoolean("useOutputBeanValidation")) {
OpenAPIUtils.validate(obj);
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
return imp.placeOrderHttp(request, body);
}
}

View File

@@ -9,9 +9,10 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.io.FileInputStream;
import play.api.libs.Files.TemporaryFile;
import javax.validation.constraints.*;
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaPlayFrameworkCodegen")
public class StoreApiControllerImp implements StoreApiControllerImpInterface {
public class StoreApiControllerImp extends StoreApiControllerImpInterface {
@Override
public void deleteOrder(Http.Request request, String orderId) throws Exception {
//Do your magic!!!

View File

@@ -3,21 +3,66 @@ package com.puppies.store.apis;
import java.util.Map;
import apimodels.Order;
import com.google.inject.Inject;
import com.typesafe.config.Config;
import play.mvc.Controller;
import play.mvc.Http;
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import play.mvc.Result;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import openapitools.OpenAPIUtils;
import static play.mvc.Results.ok;
import play.api.libs.Files.TemporaryFile;
import javax.validation.constraints.*;
@SuppressWarnings("RedundantThrows")
public interface StoreApiControllerImpInterface {
void deleteOrder(Http.Request request, String orderId) throws Exception;
public abstract class StoreApiControllerImpInterface {
@Inject private Config configuration;
private ObjectMapper mapper = new ObjectMapper();
Map<String, Integer> getInventory(Http.Request request) throws Exception;
public Result deleteOrderHttp(Http.Request request, String orderId) throws Exception {
deleteOrder(request, orderId);
return ok();
Order getOrderById(Http.Request request, @Min(1) @Max(5)Long orderId) throws Exception;
}
Order placeOrder(Http.Request request, Order body) throws Exception;
public abstract void deleteOrder(Http.Request request, String orderId) throws Exception;
public Result getInventoryHttp(Http.Request request) throws Exception {
Map<String, Integer> obj = getInventory(request);
JsonNode result = mapper.valueToTree(obj);
return ok(result);
}
public abstract Map<String, Integer> getInventory(Http.Request request) throws Exception;
public Result getOrderByIdHttp(Http.Request request, @Min(1) @Max(5)Long orderId) throws Exception {
Order obj = getOrderById(request, orderId);
if (configuration.getBoolean("useOutputBeanValidation")) {
OpenAPIUtils.validate(obj);
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
}
public abstract Order getOrderById(Http.Request request, @Min(1) @Max(5)Long orderId) throws Exception;
public Result placeOrderHttp(Http.Request request, Order body) throws Exception {
Order obj = placeOrder(request, body);
if (configuration.getBoolean("useOutputBeanValidation")) {
OpenAPIUtils.validate(obj);
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
}
public abstract Order placeOrder(Http.Request request, Order body) throws Exception;
}

View File

@@ -15,6 +15,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.inject.Inject;
import java.io.File;
import play.api.libs.Files.TemporaryFile;
import openapitools.OpenAPIUtils;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -25,7 +26,6 @@ import openapitools.OpenAPIUtils.ApiAction;
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaPlayFrameworkCodegen")
public class UserApiController extends Controller {
private final UserApiControllerImpInterface imp;
private final ObjectMapper mapper;
private final Config configuration;
@@ -37,7 +37,6 @@ public class UserApiController extends Controller {
this.configuration = configuration;
}
@ApiAction
public Result createUser(Http.Request request) throws Exception {
JsonNode nodebody = request.body().asJson();
@@ -50,8 +49,7 @@ public class UserApiController extends Controller {
} else {
throw new IllegalArgumentException("'body' parameter is required");
}
imp.createUser(request, body);
return ok();
return imp.createUserHttp(request, body);
}
@ApiAction
@@ -68,8 +66,7 @@ public class UserApiController extends Controller {
} else {
throw new IllegalArgumentException("'body' parameter is required");
}
imp.createUsersWithArrayInput(request, body);
return ok();
return imp.createUsersWithArrayInputHttp(request, body);
}
@ApiAction
@@ -86,24 +83,17 @@ public class UserApiController extends Controller {
} else {
throw new IllegalArgumentException("'body' parameter is required");
}
imp.createUsersWithListInput(request, body);
return ok();
return imp.createUsersWithListInputHttp(request, body);
}
@ApiAction
public Result deleteUser(Http.Request request, String username) throws Exception {
imp.deleteUser(request, username);
return ok();
return imp.deleteUserHttp(request, username);
}
@ApiAction
public Result getUserByName(Http.Request request, String username) throws Exception {
User obj = imp.getUserByName(request, username);
if (configuration.getBoolean("useOutputBeanValidation")) {
OpenAPIUtils.validate(obj);
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
return imp.getUserByNameHttp(request, username);
}
@ApiAction
@@ -122,15 +112,12 @@ public class UserApiController extends Controller {
} else {
throw new IllegalArgumentException("'password' parameter is required");
}
String obj = imp.loginUser(request, username, password);
JsonNode result = mapper.valueToTree(obj);
return ok(result);
return imp.loginUserHttp(request, username, password);
}
@ApiAction
public Result logoutUser(Http.Request request) throws Exception {
imp.logoutUser(request);
return ok();
return imp.logoutUserHttp(request);
}
@ApiAction
@@ -145,7 +132,7 @@ public class UserApiController extends Controller {
} else {
throw new IllegalArgumentException("'body' parameter is required");
}
imp.updateUser(request, username, body);
return ok();
return imp.updateUserHttp(request, username, body);
}
}

View File

@@ -9,9 +9,10 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.io.FileInputStream;
import play.api.libs.Files.TemporaryFile;
import javax.validation.constraints.*;
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaPlayFrameworkCodegen")
public class UserApiControllerImp implements UserApiControllerImpInterface {
public class UserApiControllerImp extends UserApiControllerImpInterface {
@Override
public void createUser(Http.Request request, User body) throws Exception {
//Do your magic!!!

View File

@@ -3,29 +3,94 @@ package com.puppies.store.apis;
import java.util.List;
import apimodels.User;
import com.google.inject.Inject;
import com.typesafe.config.Config;
import play.mvc.Controller;
import play.mvc.Http;
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import play.mvc.Result;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import openapitools.OpenAPIUtils;
import static play.mvc.Results.ok;
import play.api.libs.Files.TemporaryFile;
import javax.validation.constraints.*;
@SuppressWarnings("RedundantThrows")
public interface UserApiControllerImpInterface {
void createUser(Http.Request request, User body) throws Exception;
public abstract class UserApiControllerImpInterface {
@Inject private Config configuration;
private ObjectMapper mapper = new ObjectMapper();
void createUsersWithArrayInput(Http.Request request, List<User> body) throws Exception;
public Result createUserHttp(Http.Request request, User body) throws Exception {
createUser(request, body);
return ok();
void createUsersWithListInput(Http.Request request, List<User> body) throws Exception;
}
void deleteUser(Http.Request request, String username) throws Exception;
public abstract void createUser(Http.Request request, User body) throws Exception;
User getUserByName(Http.Request request, String username) throws Exception;
public Result createUsersWithArrayInputHttp(Http.Request request, List<User> body) throws Exception {
createUsersWithArrayInput(request, body);
return ok();
String loginUser(Http.Request request, @NotNull String username, @NotNull String password) throws Exception;
}
void logoutUser(Http.Request request) throws Exception;
public abstract void createUsersWithArrayInput(Http.Request request, List<User> body) throws Exception;
void updateUser(Http.Request request, String username, User body) throws Exception;
public Result createUsersWithListInputHttp(Http.Request request, List<User> body) throws Exception {
createUsersWithListInput(request, body);
return ok();
}
public abstract void createUsersWithListInput(Http.Request request, List<User> body) throws Exception;
public Result deleteUserHttp(Http.Request request, String username) throws Exception {
deleteUser(request, username);
return ok();
}
public abstract void deleteUser(Http.Request request, String username) throws Exception;
public Result getUserByNameHttp(Http.Request request, String username) throws Exception {
User obj = getUserByName(request, username);
if (configuration.getBoolean("useOutputBeanValidation")) {
OpenAPIUtils.validate(obj);
}
JsonNode result = mapper.valueToTree(obj);
return ok(result);
}
public abstract User getUserByName(Http.Request request, String username) throws Exception;
public Result loginUserHttp(Http.Request request, @NotNull String username, @NotNull String password) throws Exception {
String obj = loginUser(request, username, password);
JsonNode result = mapper.valueToTree(obj);
return ok(result);
}
public abstract String loginUser(Http.Request request, @NotNull String username, @NotNull String password) throws Exception;
public Result logoutUserHttp(Http.Request request) throws Exception {
logoutUser(request);
return ok();
}
public abstract void logoutUser(Http.Request request) throws Exception;
public Result updateUserHttp(Http.Request request, String username, User body) throws Exception {
updateUser(request, username, body);
return ok();
}
public abstract void updateUser(Http.Request request, String username, User body) throws Exception;
}

View File

@@ -13,10 +13,10 @@ public class ApiCall extends Action<OpenAPIUtils.ApiAction> {
@Inject
private ApiCall() {}
public CompletionStage<Result> call(Http.Context ctx) {
public CompletionStage<Result> call(Http.Request request) {
try {
//TODO: Do stuff you want to handle with each API call (metrics, logging, etc..)
return delegate.call(ctx);
return delegate.call(request);
} catch (Throwable t) {
//TODO: log the error in your metric

View File

@@ -1,2 +1,2 @@
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.7.5")
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.3")