/** * */ package vnet.sms.gateway.transport.spi; import static org.apache.commons.lang.Validate.notNull; import java.io.Serializable; import org.jboss.netty.handler.codec.frame.FrameDecoder; import org.jboss.netty.handler.codec.oneone.OneToOneDecoder; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; import vnet.sms.gateway.nettysupport.transport.incoming.TransportProtocolAdaptingUpstreamChannelHandler; import vnet.sms.gateway.nettysupport.transport.outgoing.TransportProtocolAdaptingDownstreamChannelHandler; import vnet.sms.gateway.nettysupport.window.spi.MessageReferenceGenerator; /** * @author obergner * */ public class DefaultTransportProtocolPlugin<ID extends Serializable, TP> implements TransportProtocolPlugin<ID, TP> { private final Class<TP> pduType; private final FrameDecoder frameDecoder; private final OneToOneDecoder decoder; private final OneToOneEncoder encoder; private final TransportProtocolAdaptingUpstreamChannelHandler<ID, TP> pduToWindowedMessageEventConverter; private final TransportProtocolAdaptingDownstreamChannelHandler<ID, TP> windowedMessageEventToPduConverter; private final MessageReferenceGenerator<ID> messageReferenceGenerator; /** * @param frameDecoder * @param decoder * @param encoder * @param pduToWindowedMessageEventConverter * @param windowedMessageEventToPduConverter */ public DefaultTransportProtocolPlugin( final Class<TP> pduType, final FrameDecoder frameDecoder, final OneToOneDecoder decoder, final OneToOneEncoder encoder, final TransportProtocolAdaptingUpstreamChannelHandler<ID, TP> pduToWindowedMesssageEventConverter, final TransportProtocolAdaptingDownstreamChannelHandler<ID, TP> windowedMessageEventToPduConverter, final MessageReferenceGenerator<ID> messageReferenceGenerator) { notNull(pduType, "Argument 'pduType' must not be null"); notNull(frameDecoder, "Argument 'frameDecoder' must not be null"); notNull(encoder, "Argument 'encoder' must not be null"); notNull(pduToWindowedMesssageEventConverter, "Argument 'pduToWindowedMessageEventConverter' must not be null"); notNull(windowedMessageEventToPduConverter, "Argument 'windowedMessageEventToPduConverter' must not be null"); notNull(messageReferenceGenerator, "Argument 'messageReferenceGenerator' must not be null"); this.pduType = pduType; this.frameDecoder = frameDecoder; this.decoder = decoder; this.encoder = encoder; this.pduToWindowedMessageEventConverter = pduToWindowedMesssageEventConverter; this.windowedMessageEventToPduConverter = windowedMessageEventToPduConverter; this.messageReferenceGenerator = messageReferenceGenerator; } @Override public final Class<TP> getPduType() { return this.pduType; } /** * @return the frameDecoder */ @Override public final FrameDecoder getFrameDecoder() { return this.frameDecoder; } /** * @return the decoder */ @Override public final OneToOneDecoder getDecoder() { return this.decoder; } /** * @return the encoder */ @Override public final OneToOneEncoder getEncoder() { return this.encoder; } /** * @return the pduToWindowedMessageEventConverter */ @Override public final TransportProtocolAdaptingUpstreamChannelHandler<ID, TP> getPduToWindowedMessageEventConverter() { return this.pduToWindowedMessageEventConverter; } /** * @return the windowedMessageEventToPduConverter */ @Override public final TransportProtocolAdaptingDownstreamChannelHandler<ID, TP> getWindowedMessageEventToPduConverter() { return this.windowedMessageEventToPduConverter; } @Override public final MessageReferenceGenerator<ID> getMessageReferenceGenerator() { return this.messageReferenceGenerator; } @Override public String toString() { return "DefaultTransportProtocolPlugin@" + this.hashCode() + "[pduType: " + this.pduType + "|frameDecoder: " + this.frameDecoder + "|decoder: " + this.decoder + "|encoder: " + this.encoder + "|pduToWindowedMessageEventConverter: " + this.pduToWindowedMessageEventConverter + "|windowedMessageEventToPduConverter: " + this.windowedMessageEventToPduConverter + "|messageReferenceGenerator: " + this.messageReferenceGenerator + "]"; } }