/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

  1. package com.google.sitebricks.mail;
  2. import com.google.sitebricks.mail.Mail.Auth;
  3. import org.jboss.netty.channel.ChannelPipeline;
  4. import org.jboss.netty.channel.ChannelPipelineFactory;
  5. import org.jboss.netty.channel.Channels;
  6. import org.jboss.netty.handler.codec.string.StringDecoder;
  7. import org.jboss.netty.handler.codec.string.StringEncoder;
  8. import org.jboss.netty.handler.ssl.SslHandler;
  9. import javax.net.ssl.SSLContext;
  10. import javax.net.ssl.SSLEngine;
  11. /**
  12. * @author dhanji@gmail.com (Dhanji R. Prasanna)
  13. */
  14. class MailClientPipelineFactory implements ChannelPipelineFactory {
  15. private final MailClientHandler mailClientHandler;
  16. private final MailClientConfig config;
  17. public MailClientPipelineFactory(MailClientHandler mailClientHandler, MailClientConfig config) {
  18. this.mailClientHandler = mailClientHandler;
  19. this.config = config;
  20. }
  21. public ChannelPipeline getPipeline() throws Exception {
  22. // Create a default pipeline implementation.
  23. ChannelPipeline pipeline = Channels.pipeline();
  24. if (config.getAuthType() != Auth.PLAIN) {
  25. SSLEngine sslEngine = SSLContext.getDefault().createSSLEngine();
  26. sslEngine.setUseClientMode(true);
  27. SslHandler sslHandler = new SslHandler(sslEngine);
  28. sslHandler.setEnableRenegotiation(true);
  29. pipeline.addLast("ssl", sslHandler);
  30. }
  31. pipeline.addLast("decoder", new StringDecoder());
  32. pipeline.addLast("encoder", new StringEncoder());
  33. // and then business logic.
  34. pipeline.addLast("handler", mailClientHandler);
  35. return pipeline;
  36. }
  37. }