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:
@@ -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
|
||||
+50
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user