package org.mockserver.mockserver; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; import org.mockserver.codec.MockServerServerCodec; import org.mockserver.logging.LoggingHandler; import org.mockserver.mock.MockServerMatcher; import org.mockserver.mockserver.callback.WebSocketClientRegistry; import org.mockserver.mockserver.callback.WebSocketServerHandler; import org.mockserver.server.unification.PortUnificationHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MockServerInitializer extends PortUnificationHandler { private final Logger logger = LoggerFactory.getLogger(this.getClass()); private final MockServerMatcher mockServerMatcher; private final MockServer mockServer; private final WebSocketClientRegistry webSocketClientRegistry; public MockServerInitializer(MockServerMatcher mockServerMatcher, MockServer mockServer, WebSocketClientRegistry webSocketClientRegistry) { this.mockServerMatcher = mockServerMatcher; this.mockServer = mockServer; this.webSocketClientRegistry = webSocketClientRegistry; } @Override protected void configurePipeline(ChannelHandlerContext ctx, ChannelPipeline pipeline) { // add logging if (logger.isDebugEnabled()) { pipeline.addLast(new LoggingHandler(logger)); } boolean isSecure = false; if (ctx.channel().attr(PortUnificationHandler.SSL_ENABLED).get() != null) { isSecure = ctx.channel().attr(PortUnificationHandler.SSL_ENABLED).get(); } pipeline.addLast(new WebSocketServerHandler(webSocketClientRegistry)); pipeline.addLast(new MockServerServerCodec(isSecure)); // add mock server handlers pipeline.addLast(new MockServerHandler(mockServer, mockServerMatcher, webSocketClientRegistry, ctx.channel().attr(MockServer.LOG_FILTER).get())); } }