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");
 | 
						|
    }
 | 
						|
}
 |