/*
* ASISubscriptionListener.java
*
* Created on February 28, 2003, 11:34 AM
*/
package cern.laser.source.alarmsysteminterface.impl;
import java.sql.Timestamp;
import java.util.Collection;
import javax.jms.Message;
import javax.jms.TextMessage;
import org.apache.log4j.Category;
import cern.cmw.mom.pubsub.SubscriptionListener;
import cern.laser.source.alarmsysteminterface.impl.message.ASIMessage;
import cern.laser.source.alarmsysteminterface.listener.ASIListener;
/**
* Listener class for alarm source subscription.
* @author fracalde
*/
public class ASISubscriptionListener implements SubscriptionListener {
/** logging category
*/
private static Category cat = Category.getInstance(ASISubscriptionListener.class.getName());
/** the ASI listener instance
*/
private ASIListener listener = null;
/** Creates a new instance of ASISubscriptionListener */
public ASISubscriptionListener(ASIListener l) {
if (l == null) {
throw (new IllegalArgumentException("listener is null"));
}
listener = l;
}
/**
* Callback method implementation.
* @param message the JMS message received.
*/
public void onMessage(Message message) {
cat.debug("got a message");
if (message instanceof TextMessage) {
try {
TextMessage text_message = (TextMessage) message;
String xml_message = text_message.getText();
ASIMessage asi_message = XMLMessageHelper.unmarshal(xml_message);
String source_name = asi_message.getSourceName();
String source_hostname = asi_message.getSourceHostname();
boolean backup = asi_message.getBackup();
String source_timestamp = asi_message.getSourceTimestamp(); // ISO format
Collection states = ASIMessageHelper.unmarshal(asi_message);
listener.onMessage(source_name, source_hostname, source_timestamp, backup, states);
} catch (Exception e) {
cat.error("exception caught : " + e.getMessage(), e);
}
}
}
}