package com.github.signed.tryanderror.jersey.resources;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import java.net.URI;
@Path("/root")
public class TopLevelResource {
@Context
UriInfo uriInfo;
private final LongRunningProcessStarter processStarter;
@Inject
public TopLevelResource(LongRunningProcessStarter processStarter) {
this.processStarter = processStarter;
}
@GET
@Produces("text/plain")
public String getClichedMessage() {
return "Hello from the root resource";
}
@POST
@Consumes("application/x-www-form-urlencoded")
public Response startLongRunningProcess(@FormParam("numberOfIterations") int numberOfIterations, MultivaluedMap<String, String> formParams) {
//public Response startLongRunningProcess(@QueryParam("numberOfIterations") int numberOfIterations, @Context UriInfo ui, @Context HttpHeaders hh) {
ProcessIdentifier identification = processStarter.start(new ProcessInput(numberOfIterations));
URI uri = UriBuilder.fromResource(LongRunningProcessResource.class).path(identification.toString()).build();
uri = uriInfo.getBaseUriBuilder().path(LongRunningProcessResource.class).path(identification.toString()).build();
return Response.created(uri).build();
}
}