blob: b3bbf7f7a42e97427d5e0e577515c5bf87997dcc [file] [log] [blame]
package org.testng.remote.strprotocol;
import org.testng.collections.Maps;
import java.util.Iterator;
import java.util.Map;
/**
* A generic message to be used with remote listeners.
* It is described by a {@link #m_messageType} and can contain a <code>Map</code>
* or values.
*
* @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
*/
public class GenericMessage implements IStringMessage {
protected Map m_properties;
protected final int m_messageType;
public GenericMessage(final int type) {
this(type, Maps.newHashMap());
}
public GenericMessage(final int type, Map props) {
m_messageType = type;
m_properties = props;
}
public GenericMessage addProperty(final String propName, final Object propValue) {
m_properties.put(propName, propValue);
return this;
}
public GenericMessage addProperty(final String propName, final int propValue) {
return addProperty(propName, new Integer(propValue));
}
public String getProperty(final String propName) {
return (String) m_properties.get(propName);
}
/**
* @see net.noco.testng.runner.IStringMessage#getMessageAsString()
*/
public String getMessageAsString() {
StringBuffer buf = new StringBuffer();
buf.append(m_messageType);
for(Iterator it = m_properties.entrySet().iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry) it.next();
buf.append(MessageHelper.DELIMITER)
.append(entry.getKey())
.append(MessageHelper.DELIMITER)
.append(entry.getValue())
;
}
return buf.toString();
}
}