package controllers; import play.libs.concurrent.HttpExecutionContext; import play.mvc.*; import play.twirl.api.Html; import javax.inject.Inject; import java.util.concurrent.CompletionStage; import static java.util.concurrent.CompletableFuture.supplyAsync; /** * This controller contains an action to handle HTTP requests * to the application's home page. */ public class HomeController extends Controller { private HttpExecutionContext ec; @Inject public HomeController(HttpExecutionContext ec) { this.ec = ec; } /** * An action that renders an HTML page with a welcome message. * The configuration in the routes file means that * this method will be called when the application receives a * GET request with a path of /. */ public Result index() { return ok(views.html.index.render()); } public Result applyHtml() { return ok(Html.apply("

This text will appear as a heading 1

")); } public Result badRequestPage() { return badRequest("Your request data has issues."); } public Result notFoundPage() { return notFound("Could not find the page you requested."); } public Result customContentType() { return ok("This is some text content").as("text/html"); } public CompletionStage asyncOperation() { return supplyAsync(() -> { return longRunningTask(); }, ec.current()) .thenApplyAsync(s -> { return ok("Got result -> " + s); }, ec.current()); } private String longRunningTask() { return "Long running task has completed"; } public Result setHeaders() { return ok("This is some text content") .as("text/html") .withHeader("Header-Key", "Some value"); } }