package org.ops4j.pax.web.service.jetty.internal; import org.mortbay.jetty.Connector; import org.mortbay.jetty.nio.SelectChannelConnector; import org.mortbay.jetty.security.SslSocketConnector; import org.ops4j.lang.NullArgumentException; import org.ops4j.pax.web.service.jetty.spi.SessionHandlerBuilder; import org.ops4j.pax.web.service.spi.model.ServerModel; /** * @author <a href="mailto:sgonzalez@atricore.org">Sebastian Gonzalez Oyuela</a> * @version $Id$ */ public class ConfigurableJettyFactoryImpl implements JettyFactory { /** * Associated server model. */ private final ServerModel m_serverModel; private SessionHandlerBuilder m_sessionHandlerBuilder; /** * Constrcutor. * * @param serverModel asscociated server model */ ConfigurableJettyFactoryImpl( final ServerModel serverModel ) { NullArgumentException.validateNotNull( serverModel, "Service model" ); m_serverModel = serverModel; } public SessionHandlerBuilder getSessionHandlerBuilder() { return m_sessionHandlerBuilder; } public void setSessionHandlerBuilder(SessionHandlerBuilder m_sessionHandlerBuilder) { this.m_sessionHandlerBuilder = m_sessionHandlerBuilder; } /** * {@inheritDoc} */ public JettyServer createServer() { JettyServerImpl s = new JettyServerImpl( m_serverModel, m_sessionHandlerBuilder ); return s; } /** * {@inheritDoc} */ public Connector createConnector( final int port, final String host, final boolean useNIO ) { if( useNIO ) { final SelectChannelConnector nioConnector = new NIOSocketConnectorWrapper(); nioConnector.setHost( host ); nioConnector.setPort( port ); nioConnector.setUseDirectBuffers( true ); return nioConnector; } else { final Connector connector = new SocketConnectorWrapper(); connector.setPort( port ); connector.setHost( host ); return connector; } } /** * {@inheritDoc} */ public Connector createSecureConnector( final int port, final String sslKeystore, final String sslPassword, final String sslKeyPassword, final String host, final String sslKeystoreType, final boolean isClientAuthNeeded, final boolean isClientAuthWanted ) { final SslSocketConnector connector = new SslSocketConnector(); connector.setPort( port ); connector.setKeystore( sslKeystore ); connector.setPassword( sslPassword ); connector.setKeyPassword( sslKeyPassword ); connector.setHost( host ); connector.setNeedClientAuth( isClientAuthNeeded ); connector.setWantClientAuth( isClientAuthWanted ); if( sslKeystoreType != null ) { connector.setKeystoreType( sslKeystoreType ); } return connector; } }