package org.jboss.resteasy.test.asynch.resource;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;

import org.jboss.logging.Logger;
import org.jboss.resteasy.annotations.Suspend;
import org.jboss.resteasy.spi.AsynchronousResponse;

@Path("/")
public class AsyncPostProcessingResource {

   private static Logger logger = Logger.getLogger(AsyncPostProcessingResource.class);

   @GET
   @Path("sync")
   public Response sync() {
      return Response.ok().entity("sync").build();
   }

   @GET
   @Path("async/delay")
   public void asyncDelay(@Suspend(10000) final AsynchronousResponse response) throws Exception {
      Thread t = new Thread() {
         @Override
         public void run() {
            try {
               Thread.sleep(5000);
               Response jaxrs = Response.ok("async/delay").build();
               response.setResponse(jaxrs);
            } catch (Exception e) {
               logger.info("Error: " + e.getStackTrace());
            }
         }
      };
      t.start();
   }

   @GET
   @Path("async/nodelay")
   public void asyncNoDelay(@Suspend(10000) final AsynchronousResponse response) throws Exception {
      Response jaxrs = Response.ok("async/nodelay").build();
      response.setResponse(jaxrs);
   }

}
