package org.jboss.resteasy.test.cdi.basic.resource;
import javax.ejb.Asynchronous;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.container.AsyncResponse;
import javax.ws.rs.container.Suspended;
import javax.ws.rs.core.Response;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.logging.Logger;
@Stateless
@Path("/")
public class AsynchronousResource {
@Inject
private Logger log;
@Inject
private AsynchronousStatelessLocal stateless;
public static final Long DELAY = 5000L;
@GET
@Path("asynch/simple")
public Response asynchSimple() throws ExecutionException, InterruptedException {
log.info("entering asynch()");
Future<Boolean> asyncResult = stateless.asynch();
return asyncResult.get() ? Response.ok().build() : Response.serverError().build();
}
@Asynchronous
@GET
@Path("asynch/ejb")
public void asynchEJB(@Suspended final AsyncResponse asyncResponse) throws ExecutionException, InterruptedException {
log.info("entering asynchEJB()");
Thread.sleep(DELAY);
asyncResponse.resume(Response.ok().build());
}
}