/sitebricks-mail/src/main/java/com/google/sitebricks/mail/MailClientPipelineFactory.java
http://github.com/dhanji/sitebricks · Java · 46 lines · 32 code · 9 blank · 5 comment · 2 complexity · 4a6165e2a278f69683a8dc7d88de7cce MD5 · raw file
- package com.google.sitebricks.mail;
- import com.google.sitebricks.mail.Mail.Auth;
- import org.jboss.netty.channel.ChannelPipeline;
- import org.jboss.netty.channel.ChannelPipelineFactory;
- import org.jboss.netty.channel.Channels;
- import org.jboss.netty.handler.codec.string.StringDecoder;
- import org.jboss.netty.handler.codec.string.StringEncoder;
- import org.jboss.netty.handler.ssl.SslHandler;
- import javax.net.ssl.SSLContext;
- import javax.net.ssl.SSLEngine;
- /**
- * @author dhanji@gmail.com (Dhanji R. Prasanna)
- */
- class MailClientPipelineFactory implements ChannelPipelineFactory {
- private final MailClientHandler mailClientHandler;
- private final MailClientConfig config;
- public MailClientPipelineFactory(MailClientHandler mailClientHandler, MailClientConfig config) {
- this.mailClientHandler = mailClientHandler;
- this.config = config;
- }
- public ChannelPipeline getPipeline() throws Exception {
- // Create a default pipeline implementation.
- ChannelPipeline pipeline = Channels.pipeline();
- if (config.getAuthType() != Auth.PLAIN) {
- SSLEngine sslEngine = SSLContext.getDefault().createSSLEngine();
- sslEngine.setUseClientMode(true);
- SslHandler sslHandler = new SslHandler(sslEngine);
- sslHandler.setEnableRenegotiation(true);
- pipeline.addLast("ssl", sslHandler);
- }
- pipeline.addLast("decoder", new StringDecoder());
- pipeline.addLast("encoder", new StringEncoder());
- // and then business logic.
- pipeline.addLast("handler", mailClientHandler);
- return pipeline;
- }
- }