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(); } }