/sitebricks-mail/src/main/java/com/google/sitebricks/mail/SitebricksMail.java
http://github.com/dhanji/sitebricks · Java · 85 lines · 67 code · 15 blank · 3 comment · 11 complexity · 8f5b6095c274b9e9f0e2fd363df3e503 MD5 · raw file
- package com.google.sitebricks.mail;
- import com.google.common.base.Preconditions;
- import com.google.sitebricks.mail.Mail.AuthBuilder;
- import com.google.sitebricks.mail.oauth.OAuth2Config;
- import com.google.sitebricks.mail.oauth.OAuthConfig;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.concurrent.TimeUnit;
- /**
- * @author dhanji@gmail.com (Dhanji R. Prasanna)
- */
- class SitebricksMail implements Mail, AuthBuilder {
- private String host;
- private int port;
- private long timeout;
- private ExecutorService bossPool;
- private ExecutorService workerPool;
- @Override
- public AuthBuilder clientOf(String host, int port) {
- Preconditions.checkArgument(null != host && !host.isEmpty(),
- "Must specify a valid hostname");
- Preconditions.checkArgument(port > 0,
- "Must specify a valid (non-zero) port");
- this.host = host;
- this.port = port;
- return this;
- }
- @Override
- public AuthBuilder timeout(long amount, TimeUnit unit) {
- this.timeout = unit.convert(amount, TimeUnit.MILLISECONDS);
- return this;
- }
- @Override
- public AuthBuilder executors(ExecutorService bossPool, ExecutorService workerPool) {
- Preconditions.checkArgument(bossPool != null, "Boss executor cannot be null!");
- Preconditions.checkArgument(workerPool != null, "Worker executor cannot be null!");
- this.bossPool = bossPool;
- this.workerPool = workerPool;
- return this;
- }
- @Override
- public MailClient prepare(Auth authType, String username, String password) {
- Preconditions.checkArgument(authType != Auth.OAUTH, "Pleause use prepareOAuth() instead.");
- if (null == bossPool) {
- bossPool = Executors.newCachedThreadPool();
- workerPool = Executors.newCachedThreadPool();
- }
- MailClientConfig config = new MailClientConfig(host, port, authType, username, password,
- timeout);
- return new NettyImapClient(config, bossPool, workerPool);
- }
- @Override
- public MailClient prepareOAuth(String username, OAuthConfig config) {
- if (null == bossPool) {
- bossPool = Executors.newCachedThreadPool();
- workerPool = Executors.newCachedThreadPool();
- }
- return new NettyImapClient(new MailClientConfig(host, port, username, config, timeout),
- bossPool, workerPool);
- }
- @Override
- public MailClient prepareOAuth2(String username, OAuth2Config config) {
- if (null == bossPool) {
- bossPool = Executors.newCachedThreadPool();
- workerPool = Executors.newCachedThreadPool();
- }
- return new NettyImapClient(new MailClientConfig(host, port, username, config, timeout),
- bossPool, workerPool);
- }
- }