package at.ac.tuwien.sbc.valesriegler.pizzeria.jms;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.ObjectMessage;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import at.ac.tuwien.sbc.valesriegler.jms.nac.AbstractJMSNACMsgListener;
import at.ac.tuwien.sbc.valesriegler.jms.nac.actions.AddressInfoRequest;
import at.ac.tuwien.sbc.valesriegler.jms.nac.actions.AddressInfoResponse;
import at.ac.tuwien.sbc.valesriegler.pizzeria.PizzeriaAgent;
/**
 * Handles the NAC communication for the Group Agent.
 * 
 * @author jan
 * 
 */
public class PizzeriaJMSNACMsgListener extends AbstractJMSNACMsgListener {
	private static final Logger log = LoggerFactory.getLogger(PizzeriaJMSNACMsgListener.class);

	@Override
	public void onMessage(Message msg) {
		try {
			if (msg instanceof ObjectMessage) {
				ObjectMessage objMsg = (ObjectMessage) msg;
				Object obj = objMsg.getObject();

				if (obj instanceof AddressInfoRequest) {
					AddressInfoResponse air = new AddressInfoResponse(PizzeriaAgent.getInstance().getJmspc().getCONNECTSTRING());
					PizzeriaAgent.getInstance().getJmsnac().sendNACMsg(air);
				} else if (obj instanceof AddressInfoResponse) {
					// DO NOTHING.
				} else {
					log.warn("Received unknown Object: " + obj);
				}
			} else {
				log.warn("Received unknown Message: " + msg);
			}
		} catch (JMSException e) {
			log.error("EXCEPTION!", e);
		}
	}
}
