/* # Licensed Materials - Property of IBM # Copyright IBM Corp. 2015 */ package com.ibm.streamsx.topology.tuple; import java.io.Serializable; /** * A Simple implementation of an immutable {@link Message}. */ public class SimpleMessage implements Serializable, Message { private static final long serialVersionUID = 1L; private final String topic; private final String key; private final String message; /** * Create a {@code SimpleMessage} that lacks a key and topic. * * @param message * the message */ public SimpleMessage(String message) { this(message, null, null); } /** * Create a {@code SimpleMessage} that lacks a topic. * @param message * the message * @param key * Optional key associated with the message. May be null. */ public SimpleMessage(String message, String key) { this(message, key, null); } /** * Create a {@code SimpleMessage}. * @param message * the message * @param key * Optional key associated with the message. May be null. * @param topic * Optional topic identifier associated with the message. * May be null. * @throws IllegalArgumentException if message == null */ public SimpleMessage(String message, String key, String topic) { if (message == null) throw new IllegalArgumentException("message==null"); this.topic = topic; this.key = key; this.message = message; } @Override public String getTopic() { return topic; } @Override public String getKey() { return key; } @Override public String getMessage() { return message; } @Override public String toString() { return "{topic=" + topic + ", key=" + key + ", message=" + message + "}"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (message != null ? message.hashCode() : 0); result = prime * result + (key != null ? key.hashCode() : 0); result = prime * result + (topic != null ? topic.hashCode() : 0); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; SimpleMessage other = (SimpleMessage) obj; if (message != other.message && (message == null || !message.equals(other.message))) { return false; } if (key != other.key && (key == null || !key.equals(other.key))) { return false; } if (topic != other.topic && (topic == null || !topic.equals(other.topic))) { return false; } return true; } }