BAEL-3353: Asynchronous HTTP Programming with Play Framework (#8349)

* project creation and added ws library

* BAEL-3353: pushing code for article

* BAEL-3353: changing test names

* BAEL-3353: removed unused imports

* BAEL-3353: applied review changes and fixed unit test bug

* BAEL-3353: added more examples to PR

* BAEL-3353: updated test following feedback

* BAEL-3353: add new unit test for large data download

* BAEL-3353: fixed PR following feedback
This commit is contained in:
gmconte
2020-02-24 19:12:40 +00:00
committed by GitHub
parent 53b58ab36b
commit 59623b094e
20 changed files with 529 additions and 0 deletions
@@ -0,0 +1,43 @@
package controllers;
import play.data.Form;
import play.data.FormFactory;
import play.mvc.Controller;
import play.mvc.Result;
import javax.inject.Inject;
// Add the following to conf/routes
/*
GET /$model;format="camel"$ controllers.$model;format="Camel"$Controller.$model;format="camel"$Get
POST /$model;format="camel"$ controllers.$model;format="Camel"$Controller.$model;format="camel"$Post
*/
/**
* $model;format="Camel"$ form controller for Play Java
*/
public class $model;format="Camel"$Controller extends Controller {
private final Form<$model;format="Camel"$Data> $model;format="camel"$Form;
@Inject
public $model;format="Camel"$Controller(FormFactory formFactory) {
this.$model;format="camel"$Form = formFactory.form($model;format="Camel"$Data.class);
}
public Result $model;format="camel"$Get() {
return ok(views.html.$model;format="camel"$.form.render($model;format="camel"$Form));
}
public Result $model;format="camel"$Post() {
Form<$model;format="Camel"$Data> boundForm = $model;format="camel"$Form.bindFromRequest();
if (boundForm.hasErrors()) {
return badRequest(views.html.$model;format="camel"$.form.render(boundForm));
} else {
$model;format="Camel"$Data $model;format="camel"$ = boundForm.get();
flash("success", "$model;format="Camel"$ " + $model;format="camel"$);
return redirect(routes.$model;format="Camel"$Controller.$model;format="camel"$Get());
}
}
}
@@ -0,0 +1,37 @@
package controllers;
import play.data.validation.Constraints;
public class $model;format="Camel"$Data {
@Constraints.Required
private String name;
@Constraints.Required
private Integer age;
public $model;format="Camel"$Data() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return String.format("$model;format="Camel"$Data(%s, %s)", name, age);
}
}
@@ -0,0 +1,12 @@
@($model;format="camel"$Form: Form[$model;format="Camel"$Data])
<h1>$model;format="camel"$ form</h1>
@flash.getOrDefault("success", "")
@helper.form(action = routes.$model;format="Camel"$Controller.$model;format="camel"$Post()) {
@helper.CSRF.formField
@helper.inputText($model;format="camel"$Form("name"))
@helper.inputText($model;format="camel"$Form("age"))
<input type="submit" value="submit"/>
}
@@ -0,0 +1,2 @@
description = Generates a Controller with form handling
model = user
@@ -0,0 +1 @@
Temporary file until g8-scaffold will generate "test" directory
@@ -0,0 +1,50 @@
package controllers;
import org.junit.Test;
import play.Application;
import play.filters.csrf.*;
import play.inject.guice.GuiceApplicationBuilder;
import play.mvc.*;
import play.test.WithApplication;
import java.util.HashMap;
import static org.junit.Assert.assertEquals;
import static play.mvc.Http.RequestBuilder;
import static play.mvc.Http.Status.OK;
import static play.test.Helpers.*;
import static play.api.test.CSRFTokenHelper.*;
public class $model;format="Camel"$ControllerTest extends WithApplication {
@Override
protected Application provideApplication() {
return new GuiceApplicationBuilder().build();
}
@Test
public void test$model;format="Camel"$Get() {
RequestBuilder request = new RequestBuilder()
.method(GET)
.uri("/$model;format="camel"$");
Result result = route(app, request);
assertEquals(OK, result.status());
}
@Test
public void test$model;format="Camel"$Post() {
HashMap<String, String> formData = new HashMap<>();
formData.put("name", "play");
formData.put("age", "4");
RequestBuilder request = addCSRFToken(new RequestBuilder()
.header(Http.HeaderNames.HOST, "localhost")
.method(POST)
.bodyForm(formData)
.uri("/$model;format="camel"$"));
Result result = route(app, request);
assertEquals(SEE_OTHER, result.status());
}
}