use of cern.laser.source.alarmsysteminterface.impl.message.ASIMessage in project ACS by ACS-Community.
the class LaserComponent method buildMessage.
/**
* Build the {@link ACSJMSTextMessage} for a given fault state
*
* @param state The fault state
* @param hostName The host name
*
* @see AlarmSystemInterfaceProxy#publish
*/
private TextMessage buildMessage(cern.laser.source.alarmsysteminterface.impl.message.FaultState state, String hostName, String sourceName) throws Exception {
if (state == null) {
throw new IllegalArgumentException("The fault state can't be null");
}
if (hostName == null || hostName.isEmpty()) {
throw new IllegalArgumentException("Invalid host name");
}
if (sourceName == null || sourceName.isEmpty()) {
throw new IllegalArgumentException("Invalid source name");
}
Collection<FaultStateImpl> tempStates = new Vector<FaultStateImpl>();
cern.laser.source.alarmsysteminterface.impl.message.FaultState tempState = new FaultState();
ASIMessage asi_message = ASIMessageHelper.marshal(tempStates);
FaultStates states = new FaultStates();
states.addFaultState(state);
asi_message.setFaultStates(states);
asi_message.setSourceName("ALARM_SYSTEM_SOURCES");
asi_message.setSourceHostname(hostName);
asi_message.setSourceTimestamp(IsoDateFormat.formatCurrentDate());
asi_message.setBackup(false);
Configurator configurator = new Configurator();
ASIConfiguration configuration = configurator.getConfiguration();
asi_message.setVersion(configuration.getASIVersion());
ACSJMSTextMessage tm = new ACSJMSTextMessage(alSysContSvcs);
tm.setText(XMLMessageHelper.marshal(asi_message));
tm.setStringProperty(configuration.getSourceNameProperty(), sourceName);
tm.setStringProperty(configuration.getSourceHostnameProperty(), hostName);
tm.setStringProperty(configuration.getBackupProperty(), String.valueOf(false));
tm.setStringProperty(configuration.getAlarmsNumberProperty(), String.valueOf(1));
return tm;
}
use of cern.laser.source.alarmsysteminterface.impl.message.ASIMessage in project ACS by ACS-Community.
the class TestAlarmMessageProcessor method createJMSMessage.
private ACSJMSTextMessage createJMSMessage(String ff, String fm, int code, boolean active) throws Exception, JMSException {
// Create the fault states
List<FaultState> states = new ArrayList<FaultState>();
for (int j = 0; j != N_STATE_CHANGES; j++) {
FaultState faultState = new FaultStateImpl(ff, fm, code);
faultState.setDescriptor(active ? FaultState.ACTIVE : FaultState.TERMINATE);
faultState.setUserTimestamp(new Timestamp(System.currentTimeMillis()));
states.add(faultState);
}
// Create the ASIMessage with the fault states
ASIMessage asiMessage = ASIMessageHelper.marshal(states);
cern.laser.source.alarmsysteminterface.impl.message.Timestamp timestamp = new cern.laser.source.alarmsysteminterface.impl.message.Timestamp();
long currentTimeMillis = System.currentTimeMillis();
timestamp.setMicroseconds(currentTimeMillis % 1000);
timestamp.setSeconds(currentTimeMillis / 1000);
asiMessage.setSourceTimestamp(timestamp);
asiMessage.setSourceHostname(hostname);
asiMessage.setBackup(false);
asiMessage.setSourceName("ALARM_SYSTEM_SOURCES");
// And wrap it inside a JMS text message
ACSJMSTextMessage message = new ACSJMSTextMessage(new DummyContainerServices("test", m_logger));
String text = XMLMessageHelper.marshal(asiMessage);
message.setText(text);
return message;
}
use of cern.laser.source.alarmsysteminterface.impl.message.ASIMessage in project ACS by ACS-Community.
the class SendTest method receive.
/**
* The method receives all the messages published in the NC
* For each message received it checks if its content is right
* i.e. the name of the class, the member and the code contains the
* number of the message in the sequence. In this way it also checks
* if the messages are received in the same order they were sent.
* The method also checks if all the messages have been received
* and prints a message if receives more messages then the messages
* pushed
*
* @param msg The message received from the NC
* @see alma.acs.nc.Consumer
*/
@Override
public synchronized void receive(ACSJMSMessageEntity msg, EventDescription eventDescrip) {
Collection<FaultState> faultStates;
try {
ASIMessage asiMsg = XMLMessageHelper.unmarshal(msg.text);
faultStates = ASIMessageHelper.unmarshal(asiMsg);
} catch (Exception e) {
System.out.println("Exception caught while unmarshalling the msg " + e.getMessage());
e.printStackTrace();
receiverError = e;
return;
}
Iterator<FaultState> iter = faultStates.iterator();
while (iter.hasNext()) {
FaultStateImpl fs = (FaultStateImpl) iter.next();
if (!isValidFSMessage(fs, nMsgReceived)) {
receiverError = "Invalid FaultState received as #" + nMsgReceived;
}
nMsgReceived++;
if (nMsgReceived == ITERATIONS) {
System.out.println("All alarms sent and received");
} else if (nMsgReceived > ITERATIONS) {
System.out.println("Received an alarm that has never been sent");
}
}
}
use of cern.laser.source.alarmsysteminterface.impl.message.ASIMessage in project ACS by ACS-Community.
the class SourceStressTest method receive.
@Override
public synchronized void receive(ACSJMSMessageEntity msg, EventDescription eventDescrip) {
ASIMessage asiMsg = null;
try {
asiMsg = XMLMessageHelper.unmarshal(msg.text);
} catch (Exception e) {
System.out.println("Exception caught while unmarshalling the msg " + e.getMessage());
e.printStackTrace();
// receiverError = e; // SendTest works with checking these errors in the test..
return;
}
Collection<FaultState> faultStates = ASIMessageHelper.unmarshal(asiMsg);
assertNotNull(faultStates);
for (FaultState fs : faultStates) {
assertNotNull(fs);
receivedFS.add(new FaultStateReceived(fs));
}
}
use of cern.laser.source.alarmsysteminterface.impl.message.ASIMessage in project ACS by ACS-Community.
the class ASISubscriptionListener method onMessage.
/**
* 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();
// ISO format
String source_timestamp = asi_message.getSourceTimestamp();
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);
}
}
}
Aggregations