package org.jboss.resteasy.test.cdi.basic.resource; import javax.ejb.Stateless; import javax.enterprise.event.Event; import javax.inject.Inject; import javax.ws.rs.PathParam; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Logger; @Stateless public class EJBEventsSourceImpl implements EJBEventsSource { private static Map<Integer, EJBBook> collection = new HashMap<Integer, EJBBook>(); private static AtomicInteger counter = new AtomicInteger(); @Inject @EventsProcess Event<String> processEvent; @Inject @EventsRead(context = "resource") @EventsProcess Event<String> readProcessEvent; @Inject @EventsWrite(context = "resource") @EventsProcess Event<String> writeProcessEvent; @Inject EJBEventsObserver eventObserver; @Inject private Logger log; public boolean test() { log.info("entering EJBEventsSourceImpl.test()"); ArrayList<Object> eventList = eventObserver.getEventList(); for (int i = 0; i < eventList.size(); i++) { log.info(eventList.get(i).toString()); } log.info("leaving EJBEventsSourceImpl.test()"); return true; } public int createBook(EJBBook book) { log.info("entering EJBEventsSourceImpl.createBook()"); log.info("EJBEventsSourceImpl firing processEvent"); processEvent.fire("processEvent"); int id = counter.getAndIncrement(); book.setId(id); collection.put(id, book); log.info("stored: " + id + "->" + book); log.info("EJBEventsSourceImpl firing readProcessEvent"); readProcessEvent.fire("readProcessEvent"); log.info("leaving EJBEventsSourceImpl.createBook()"); return id; } public EJBBook lookupBookById(@PathParam("id") int id) { log.info("entering EJBEventsSourceImpl.lookupBookById(" + id + ")"); log.info("books: " + collection); log.info("EJBEventsSourceImpl firing processEvent"); processEvent.fire("processEvent"); EJBBook book = collection.get(id); log.info("EJBEventsSourceImpl firing writeProcessEvent"); writeProcessEvent.fire("writeProcessEvent"); if (book == null) { throw new WebApplicationException(Response.Status.NOT_FOUND); } log.info("leaving EJBEventsSourceImpl.lookupBookById(" + id + ")"); return book; } }