/**
*
*/
package vnet.sms.gateway.nettysupport.transport.incoming;
import static org.apache.commons.lang.Validate.notNull;
import java.io.Serializable;
import org.jboss.netty.channel.UpstreamMessageEvent;
import vnet.sms.common.messages.GsmPdu;
import vnet.sms.common.messages.LoginRequest;
import vnet.sms.common.messages.LoginResponse;
import vnet.sms.common.messages.PingRequest;
import vnet.sms.common.messages.PingResponse;
import vnet.sms.common.messages.Sms;
import vnet.sms.common.wme.WindowedMessageEvent;
import vnet.sms.common.wme.receive.ReceivedLoginRequestAcknowledgementEvent;
import vnet.sms.common.wme.receive.ReceivedLoginRequestEvent;
import vnet.sms.common.wme.receive.ReceivedPingRequestAcknowledgementEvent;
import vnet.sms.common.wme.receive.ReceivedPingRequestEvent;
import vnet.sms.common.wme.receive.ReceivedSmsEvent;
/**
* @author obergner
*
*/
class UpstreamMessageEventToWindowedMessageEventConverter {
static final UpstreamMessageEventToWindowedMessageEventConverter INSTANCE = new UpstreamMessageEventToWindowedMessageEventConverter();
private UpstreamMessageEventToWindowedMessageEventConverter() {
// Singleton
}
<ID extends Serializable> WindowedMessageEvent<ID, ? extends GsmPdu> convert(
final ID messageReference,
final UpstreamMessageEvent upstreamMessageEvent, final GsmPdu gsmPdu) {
notNull(messageReference,
"Argument 'messageReference' must not be null");
notNull(upstreamMessageEvent,
"Cannot convert a null upstreamMessageEvent");
notNull(gsmPdu, "Cannot convert a null message");
final WindowedMessageEvent<ID, ? extends GsmPdu> converted;
if (gsmPdu instanceof LoginRequest) {
converted = new ReceivedLoginRequestEvent<ID>(messageReference,
upstreamMessageEvent, (LoginRequest) gsmPdu);
} else if (gsmPdu instanceof LoginResponse) {
converted = new ReceivedLoginRequestAcknowledgementEvent<ID>(
messageReference, upstreamMessageEvent,
(LoginResponse) gsmPdu);
} else if (gsmPdu instanceof PingRequest) {
converted = new ReceivedPingRequestEvent<ID>(messageReference,
upstreamMessageEvent, (PingRequest) gsmPdu);
} else if (gsmPdu instanceof PingResponse) {
converted = new ReceivedPingRequestAcknowledgementEvent<ID>(
messageReference, upstreamMessageEvent,
(PingResponse) gsmPdu);
} else if (gsmPdu instanceof Sms) {
converted = new ReceivedSmsEvent<ID>(messageReference,
upstreamMessageEvent, (Sms) gsmPdu);
} else {
throw new IllegalArgumentException("Unsupported message type: "
+ gsmPdu.getClass());
}
return converted;
}
}