package org.glassfish.test.jms.injection.ejb;
import javax.annotation.Resource;
import javax.ejb.*;
import javax.inject.Inject;
import javax.jms.*;
/**
*
* @author LILIZHAO
*/
@Stateless(mappedName="MessageReceiverBean/remote")
public class MessageReceiverBean implements MessageReceiverRemote {
@Resource(mappedName = "jms/jms_unit_test_Queue")
private Queue queue;
@Inject
@JMSConnectionFactory("jms/jms_unit_test_QCF")
@JMSSessionMode(JMSContext.AUTO_ACKNOWLEDGE)
private JMSContext jmsContext;
@Override
public boolean checkMessage(String[] texts) {
try {
JMSConsumer consumer = jmsContext.createConsumer(queue);
boolean[] found = new boolean[texts.length];
for (int i=0; i<texts.length; i++) {
Message msg = consumer.receive(30000L);
if (msg instanceof TextMessage) {
String content = ((TextMessage) msg).getText();
for (int j=0; j<texts.length; j++) {
if (!found[j] && texts[i].equals(content))
found[j] = true;
break;
}
}
}
boolean result = true;
for (int i=0; i<found.length; i++)
result = result & found[i];
return result;
} catch (Exception e) {
throw new EJBException(e);
}
}
}