package vnet.sms.common.wme.send;
import static org.apache.commons.lang.Validate.notNull;
import java.io.Serializable;
import vnet.sms.common.messages.GsmPdu;
import vnet.sms.common.wme.MessageEventType;
/**
* @author obergner
*
* @param <M>
*/
abstract class AbstractMessageSendContainer<M extends GsmPdu> implements
MessageSendContainer<M>, Serializable {
private static final long serialVersionUID = -662855539360676935L;
private final MessageEventType messageEventType;
private final M message;
/**
* @param message
*/
protected AbstractMessageSendContainer(
final MessageEventType messageEventType, final M message) {
notNull(messageEventType,
"Argument 'messageEventType' must not be null");
notNull(message, "Argument 'message' must not be null");
this.messageEventType = messageEventType;
this.message = message;
}
/**
* @see vnet.sms.common.wme.send.MessageSendContainer#getMessage()
*/
@Override
public M getMessage() {
return this.message;
}
/**
* @see vnet.sms.common.wme.send.MessageSendContainer#getMessageType()
*/
@Override
public MessageEventType getMessageType() {
return this.messageEventType;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((this.message == null) ? 0 : this.message.hashCode());
return result;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final AbstractMessageSendContainer<?> other = (AbstractMessageSendContainer<?>) obj;
if (this.message == null) {
if (other.message != null) {
return false;
}
} else if (!this.message.equals(other.message)) {
return false;
}
return true;
}
}