69 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| 
								 | 
							
								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 <code>routes</code> file means that
							 | 
						||
| 
								 | 
							
								     * this method will be called when the application receives a
							 | 
						||
| 
								 | 
							
								     * <code>GET</code> request with a path of <code>/</code>.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public Result index() {
							 | 
						||
| 
								 | 
							
								        return ok(views.html.index.render());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public Result applyHtml() {
							 | 
						||
| 
								 | 
							
								        return ok(Html.apply("<h1>This text will appear as a heading 1</h1>"));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    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<Result> 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");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |