package vnet.sms.gateway.server.framework; import java.lang.management.ManagementFactory; import javax.management.Notification; import org.jboss.netty.channel.group.DefaultChannelGroup; import org.jboss.netty.handler.codec.serialization.ClassResolvers; import org.jboss.netty.handler.codec.serialization.ObjectDecoder; import org.jboss.netty.handler.codec.serialization.ObjectEncoder; import org.jboss.netty.util.HashedWheelTimer; import org.springframework.jms.core.JmsTemplate; import org.springframework.jmx.export.MBeanExporter; import org.springframework.jmx.export.notification.NotificationPublisher; import org.springframework.jmx.export.notification.UnableToSendNotificationException; import org.springframework.security.authentication.AuthenticationManager; import vnet.sms.common.wme.jmsbridge.WindowedMessageEventToJmsMessageConverter; import vnet.sms.gateway.nettysupport.monitor.incoming.InitialChannelEventsMonitor; import vnet.sms.gateway.server.framework.internal.channel.GatewayServerChannelPipelineFactory; import vnet.sms.gateway.server.framework.internal.jmsbridge.IncomingMessagesForwardingJmsBridge; import vnet.sms.gateway.server.framework.test.SerialIntegersMessageReferenceGenerator; import vnet.sms.gateway.transports.serialization.ReferenceableMessageContainer; import vnet.sms.gateway.transports.serialization.incoming.SerializationTransportProtocolAdaptingUpstreamChannelHandler; import vnet.sms.gateway.transports.serialization.outgoing.SerializationTransportProtocolAdaptingDownstreamChannelHandler; import com.mockrunner.jms.ConfigurationManager; import com.mockrunner.jms.DestinationManager; import com.mockrunner.mock.jms.MockConnectionFactory; import com.yammer.metrics.Metrics; public class AbstractGatewayServerTest { private static final String DEFAULT_QUEUE_NAME = "queue.test.defaultDestination"; protected final JmsTemplate newJmsTemplate() { final DestinationManager destinationManager = new DestinationManager(); destinationManager.createQueue(DEFAULT_QUEUE_NAME); final ConfigurationManager configurationManager = new ConfigurationManager(); final MockConnectionFactory mockConnectionFactory = new MockConnectionFactory( destinationManager, configurationManager); final JmsTemplate jmsTemplate = new JmsTemplate(mockConnectionFactory); jmsTemplate .setMessageConverter(new WindowedMessageEventToJmsMessageConverter()); jmsTemplate.setDefaultDestinationName(DEFAULT_QUEUE_NAME); return jmsTemplate; } protected final GatewayServerChannelPipelineFactory<Integer, ReferenceableMessageContainer> newGatewayServerChannelPipelineFactory( final String instanceId, final int availableIncomingWindows, final long incomingWindowWaitTimeMillis, final long failedLoginResponseMillis, final int pingIntervalSeconds, final long pingResponseTimeoutMillis, final AuthenticationManager authenticationManager, final JmsTemplate jmsTemplate) { final MBeanExporter mbeanExporter = new MBeanExporter(); mbeanExporter.setServer(ManagementFactory.getPlatformMBeanServer()); final NotificationPublisher notPublisher = new NotificationPublisher() { @Override public void sendNotification(final Notification notification) throws UnableToSendNotificationException { } }; final InitialChannelEventsMonitor initialChannelEventsMonitor = new InitialChannelEventsMonitor( notPublisher); return new GatewayServerChannelPipelineFactory<Integer, ReferenceableMessageContainer>( instanceId, ReferenceableMessageContainer.class, new ObjectDecoder(ClassResolvers.cacheDisabled(null)), null, new ObjectEncoder(), new SerializationTransportProtocolAdaptingUpstreamChannelHandler(), new SerializationTransportProtocolAdaptingDownstreamChannelHandler(), new IncomingMessagesForwardingJmsBridge<Integer>(jmsTemplate), availableIncomingWindows, incomingWindowWaitTimeMillis, authenticationManager, failedLoginResponseMillis, new SerialIntegersMessageReferenceGenerator(), pingIntervalSeconds, pingResponseTimeoutMillis, mbeanExporter, initialChannelEventsMonitor, Metrics.defaultRegistry(), new HashedWheelTimer(), new DefaultChannelGroup()); } }