package de.anycook.api.providers; import com.google.common.collect.ImmutableList; import de.anycook.news.life.Life; import de.anycook.news.life.Lifes; import org.apache.logging.log4j.LogManager; import java.sql.SQLException; import java.util.List; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import javax.ws.rs.container.AsyncResponse; import javax.ws.rs.core.GenericEntity; /** * @author Jan Graßegger<jan@anycook.de> */ public class LifeProvider { private static BlockingQueue<AsyncResponse> suspended = new ArrayBlockingQueue<>(500); public static void suspend(AsyncResponse response) { suspended.add(response); } public static void wakeUpSuspended() throws SQLException { Life newLife = Lifes.getLastLife(); List<Life> list = ImmutableList.of(newLife); while (!suspended.isEmpty()) { try { AsyncResponse response = suspended.take(); if (response.isSuspended()) { //response.resume(list); final GenericEntity<List<Life>> entity = new GenericEntity<List<Life>>(list) {}; response.resume(entity); } } catch (InterruptedException e) { LogManager.getLogger(LifeProvider.class).warn(e, e); } } } }