/**
*
*/
package vnet.sms.common.wme.acknowledge;
import static org.apache.commons.lang.Validate.notNull;
import java.io.Serializable;
import vnet.sms.common.messages.Acknowledgement;
import vnet.sms.common.messages.GsmPdu;
import vnet.sms.common.wme.MessageEventType;
/**
* @author obergner
*
*/
abstract class AbstractMessageAcknowledgementContainer<ID extends Serializable, M extends GsmPdu>
implements MessageAcknowledgementContainer<ID, M>, Serializable {
private static final long serialVersionUID = 2256764884947681256L;
private final MessageEventType acknowledgedMessageType;
private final Acknowledgement acknowledgement;
private final ID acknowledgedMessageReference;
private final int receivingChannelId;
private final M acknowledgedMessage;
/**
* @param acknowledgedMessageType
* @param acknowledgement
* @param acknowledgedMessageReference
* @param acknowledgedMessage
*/
protected AbstractMessageAcknowledgementContainer(
final MessageEventType acknowledgedMessageType,
final Acknowledgement acknowledgement,
final ID acknowledgedMessageReference,
final int receivingChannelId, final M acknowledgedMessage) {
notNull(acknowledgedMessageType,
"Argument 'acknowledgedMessageType' may not be null");
notNull(acknowledgement, "Argument 'acknowledgement' may not be null");
notNull(acknowledgedMessageReference,
"Argument 'acknowledgedMessageReference' may not be null");
notNull(acknowledgedMessage,
"Argument 'acknowledgedMessage' may not be null");
this.acknowledgedMessageType = acknowledgedMessageType;
this.acknowledgement = acknowledgement;
this.acknowledgedMessageReference = acknowledgedMessageReference;
this.receivingChannelId = receivingChannelId;
this.acknowledgedMessage = acknowledgedMessage;
}
/**
* @see vnet.sms.common.wme.acknowledge.MessageAcknowledgementContainer#getAcknowledgedMessageType()
*/
@Override
public MessageEventType getAcknowledgedMessageType() {
return this.acknowledgedMessageType;
}
/**
* @see vnet.sms.common.wme.acknowledge.MessageAcknowledgementContainer#getAcknowledgement()
*/
@Override
public Acknowledgement getAcknowledgement() {
return this.acknowledgement;
}
/**
* @see vnet.sms.common.wme.acknowledge.MessageAcknowledgementContainer#isAccepted()
*/
@Override
public boolean isAccepted() {
return this.acknowledgement.is(Acknowledgement.Status.ACK);
}
/**
* @see vnet.sms.common.wme.acknowledge.MessageAcknowledgementContainer#getAcknowledgedMessageReference()
*/
@Override
public ID getAcknowledgedMessageReference() {
return this.acknowledgedMessageReference;
}
/**
* @see vnet.sms.common.wme.acknowledge.MessageAcknowledgementContainer#getReceivingChannelId()
*/
@Override
public int getReceivingChannelId() {
return this.receivingChannelId;
}
/**
* @see vnet.sms.common.wme.acknowledge.MessageAcknowledgementContainer#getAcknowledgedMessage()
*/
@Override
public M getAcknowledgedMessage() {
return this.acknowledgedMessage;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime
* result
+ ((this.acknowledgedMessage == null) ? 0
: this.acknowledgedMessage.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 AbstractMessageAcknowledgementContainer<?, ?> other = (AbstractMessageAcknowledgementContainer<?, ?>) obj;
if (this.acknowledgedMessage == null) {
if (other.acknowledgedMessage != null) {
return false;
}
} else if (!this.acknowledgedMessage.equals(other.acknowledgedMessage)) {
return false;
}
return true;
}
@Override
public String toString() {
return getClass().getSimpleName() + "@" + this.hashCode()
+ "[acknowledgedMessageType: " + this.acknowledgedMessageType
+ "|acknowledgement: " + this.acknowledgement
+ "|acknowledgedMessageReference: "
+ this.acknowledgedMessageReference + "|receivingChannelId: "
+ this.receivingChannelId + "|acknowledgedMessage: "
+ this.acknowledgedMessage + "]";
}
}