package org.jboss.resteasy.plugins.server.netty;
import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.handler.ssl.SslHandler;
import org.jboss.resteasy.plugins.server.netty.RestEasyHttpRequestDecoder.Protocol;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLEngine;
import java.util.List;
/**
* {@link HttpServerPipelineFactory} subclass which enable the use of HTTPS
*
* @author Norman Maurer
*
*/
public class HttpsServerPipelineFactory extends HttpServerPipelineFactory
{
private final SSLContext context;
public HttpsServerPipelineFactory(RequestDispatcher dispatcher, String root, int executorThreadCount, int maxRequestSize, boolean isKeepAlive, List<ChannelHandler> additionalChannelHandlers, SSLContext context)
{
super(dispatcher, root, executorThreadCount, maxRequestSize, isKeepAlive, additionalChannelHandlers);
this.context = context;
}
@Override
public ChannelPipeline getPipeline() throws Exception
{
ChannelPipeline cp = super.getPipeline();
SSLEngine engine = context.createSSLEngine();
engine.setUseClientMode(false);
cp.addFirst("sslHandler", new SslHandler(engine));
return cp;
}
@Override
protected Protocol getProtocol()
{
return Protocol.HTTPS;
}
}