/** * */ package vnet.sms.common.wme.acknowledge; import static org.apache.commons.lang.Validate.isTrue; 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 SendSmsAckEvent<ID extends Serializable> extends DownstreamSendMessageAcknowledgementEvent<ID, Sms> { public static final <I extends Serializable> SendSmsAckEvent<I> convert( final MessageEvent receivedSmsAckedMessageEvent) { notNull(receivedSmsAckedMessageEvent, "Argument 'receivedSmsAckedMessageEvent' must not be null"); isTrue(receivedSmsAckedMessageEvent.getMessage() instanceof SendSmsAckContainer, "Can only convert MessageEvents having a SendSmsAckContainer as their payload. Got: " + receivedSmsAckedMessageEvent.getMessage()); final SendSmsAckContainer<I> ackContainer = SendSmsAckContainer.class .cast(receivedSmsAckedMessageEvent.getMessage()); return new SendSmsAckEvent<I>( ackContainer.getAcknowledgedMessageReference(), receivedSmsAckedMessageEvent.getChannel(), receivedSmsAckedMessageEvent.getFuture(), ackContainer.getAcknowledgedMessage()); } private SendSmsAckEvent(final ID messageReference, final Channel channel, final ChannelFuture future, final Sms message) { super(messageReference, MessageEventType.SEND_SMS_ACK, channel, message, Acknowledgement.ack()); } }