package org.jboss.resteasy.test.cdi.injection.resource;
import org.jboss.resteasy.test.cdi.util.Counter;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.inject.Inject;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import java.util.concurrent.CountDownLatch;
import java.util.logging.Logger;
@MessageDriven(name = "BookMDB",
activationConfig = {@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/test")}
)
public class CDIInjectionBookMDB implements MessageListener {
@Inject
private Logger log;
@Inject
private CDIInjectionBookResource resource;
public void onMessage(Message arg0) {
TextMessage tm = TextMessage.class.cast(arg0);
try {
log.info(this + ": msg: " + tm.getText());
CDIInjectionBookCollection collection = resource.getBookCollection();
log.info(this + ": collection.size() before: " + collection.getBooks().size());
Counter counter = resource.getCounter();
collection.addBook(new CDIInjectionBook(counter.getNext(), tm.getText()));
log.info(this + ": collection.size() after: " + collection.getBooks().size());
CountDownLatch latch = resource.getCountDownLatch();
latch.countDown(); // Tell BookResource book has been stored.
} catch (JMSException e) {
log.info(String.format("Stacktrace: %s", (Object[]) e.getStackTrace()));
}
}
}