package com.datascience.service;
import java.util.NoSuchElementException;
import javax.servlet.ServletContext;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import com.datascience.executor.CommandStatus;
import com.datascience.executor.ICommandStatusesContainer;
import com.sun.jersey.spi.resource.Singleton;
@Path("/responses/")
@Singleton
public class ResponsesEntry {
@Context ServletContext context;
private ResponseBuilder getResponseBuilder(){
return (ResponseBuilder) context.getAttribute(Constants.RESPONSER);
}
private ICommandStatusesContainer getCommandStatusContainer(){
return (ICommandStatusesContainer) context.getAttribute(Constants.COMMAND_STATUSES_CONTAINER);
}
@GET
@Path("/{id}/{res: .*}")
public Response getResponse(@PathParam("id") String sid) throws Exception {
CommandStatus status = getCommandStatusContainer().getCommandResult(sid);
if (status == null) {
throw new NoSuchElementException("No status with id: " + sid);
}
return getResponseBuilder().makeStatusResponse(status);
}
}