/**
*
*/
package vnet.sms.common.wme.acknowledge;
import static org.apache.commons.lang.Validate.isTrue;
import static org.apache.commons.lang.Validate.notEmpty;
import static org.apache.commons.lang.Validate.notNull;
import java.io.Serializable;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelFuture;
import org.jboss.netty.channel.MessageEvent;
import vnet.sms.common.messages.Acknowledgement;
import vnet.sms.common.messages.Sms;
import vnet.sms.common.wme.MessageEventType;
/**
* @author obergner
*
*/
public class SendSmsNackEvent<ID extends java.io.Serializable> extends
DownstreamSendMessageAcknowledgementEvent<ID, Sms> {
public static final <I extends Serializable> SendSmsNackEvent<I> convert(
final MessageEvent receivedSmsNackedMessageEvent) {
notNull(receivedSmsNackedMessageEvent,
"Argument 'receivedSmsNackedMessageEvent' must not be null");
isTrue(receivedSmsNackedMessageEvent.getMessage() instanceof SendSmsNackContainer,
"Can only convert MessageEvents having a SendSmsNackContainer as their payload. Got: "
+ receivedSmsNackedMessageEvent.getMessage());
final SendSmsNackContainer<I> nackContainer = SendSmsNackContainer.class
.cast(receivedSmsNackedMessageEvent.getMessage());
return new SendSmsNackEvent<I>(
nackContainer.getAcknowledgedMessageReference(),
receivedSmsNackedMessageEvent.getChannel(),
receivedSmsNackedMessageEvent.getFuture(),
nackContainer.getAcknowledgedMessage(),
nackContainer.getErrorKey(),
nackContainer.getErrorDescription());
}
private final int errorKey;
private final String errorDescription;
private SendSmsNackEvent(final ID messageReference, final Channel channel,
final ChannelFuture future, final Sms message, final int errorKey,
final String errorDescription) {
super(messageReference, MessageEventType.SEND_SMS_NACK, channel,
future, message, Acknowledgement.nack());
notEmpty(errorDescription,
"Argument 'errorDescription' may be neither null nor empty");
this.errorKey = errorKey;
this.errorDescription = errorDescription;
}
/**
* @return the errorKey
*/
public final int getErrorKey() {
return this.errorKey;
}
/**
* @return the errorDescription
*/
public final String getErrorDescription() {
return this.errorDescription;
}
@Override
public String toString() {
return "SendSmsNackEvent@" + this.hashCode() + "[acknowledgement: "
+ this.getAcknowledgement() + "|messageReference: "
+ this.getAcknowledgedMessageReference() + "|message: "
+ this.getMessage() + "|channel: " + this.getChannel()
+ "|errorKey: " + this.errorKey + "|errorDescription: "
+ this.errorDescription + "]";
}
}