OSDN Git Service

ディレクトリ構成を Maven 2 標準にすることで pom.xml を簡略化
[spring-ext/ozacc-mail.git] / src / java / com / ozacc / mail / mock / MockSendMail.java
diff --git a/src/java/com/ozacc/mail/mock/MockSendMail.java b/src/java/com/ozacc/mail/mock/MockSendMail.java
deleted file mode 100755 (executable)
index 29c52c7..0000000
+++ /dev/null
@@ -1,536 +0,0 @@
-package com.ozacc.mail.mock;\r
-\r
-import java.io.UnsupportedEncodingException;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import java.util.Properties;\r
-\r
-import javax.mail.MessagingException;\r
-import javax.mail.Session;\r
-import javax.mail.internet.InternetAddress;\r
-import javax.mail.internet.MimeMessage;\r
-\r
-import com.ozacc.mail.Mail;\r
-import com.ozacc.mail.MailBuildException;\r
-import com.ozacc.mail.MailException;\r
-import com.ozacc.mail.SendMail;\r
-import com.ozacc.mail.impl.MimeMessageBuilder;\r
-\r
-/**\r
- * SendMailImplクラスのMock。<br>\r
- * 実存するSMTPサーバを設定しても、実際には送信されません。\r
- * デバッグモードを有効にすると、メールを送信するタイミングでコンソールに送信メール内容が出力されます。\r
- * <p>\r
- * Mailインスタンスを addExpectedMail() にセットし verify() メソッドを実行すると、send() されたMailインスタンスと全てのプロパティ(XHeader、添付ファイルを除く)が一致しなければAssertionFailedExceptionがスローされます。\r
- * <p>\r
- * 例えば、send() されたMailインスタンスのFromアドレスと件名だけチェックし、その他のプロパティはチェックしたくない場合は、MockMailインスタンスを使用します。\r
- * <pre>Mail sentMail = new Mail();\r
- *sentMail.setFrom("from@example.com");\r
- *sentMail.setSubject("件名");\r
- *sentMail.addTo("to@example.com");\r
- *sentMail.setText("動的生成される本文");\r
- *\r
- *Mail expectedMail = new Mail();\r
- *expectedMail.setFrom("from@example.com");\r
- *expectedMail.setSubject("件名");\r
- *\r
- *MockMail mockMail = new MockMail();\r
- *mockMail.setFrom("from@example.com");\r
- *mockMail.setSubject("件名");\r
- *\r
- *MockSendMail sendMail = new MockSendMail();\r
- *sendMail.addExpectedMail(expectedMail);\r
- *sendMail.send(sentMail);\r
- *sendMail.verify(); // 失敗 AssertionFailedException\r
- *\r
- *sendMail = new MockSendMail();\r
- *sendMail.addExpectedMail(mockMail);\r
- *sendMail.send(sentMail);\r
- *sendMail.verify(); // 成功</pre>\r
- * <p>\r
- * <strong>注:</strong> 添付ファイルは比較対象になりません。\r
- * \r
- * @since 1.0\r
- * @author Tomohiro Otsuka\r
- * @version $Id: MockSendMail.java,v 1.10.2.1 2004/11/25 08:01:47 otsuka Exp $\r
- */\r
-public class MockSendMail implements SendMail {\r
-\r
-       /** デフォルトのプロトコル。「smtp」 */\r
-       public static final String DEFAULT_PROTOCOL = "smtp";\r
-\r
-       /** デフォルトのポート。「-1」 */\r
-       public static final int DEFAULT_PORT = -1;\r
-\r
-       /** デフォルトのSMTPサーバ。「localhost」 */\r
-       public static final String DEFAULT_HOST = "localhost";\r
-\r
-       /** ISO-2022-JP */\r
-       public static final String JIS_CHARSET = "ISO-2022-JP";\r
-\r
-       private static final String RETURN_PATH_KEY = "mail.smtp.from";\r
-\r
-       private String protocol = DEFAULT_PROTOCOL;\r
-\r
-       private String host = DEFAULT_HOST;\r
-\r
-       private int port = DEFAULT_PORT;\r
-\r
-       private String username;\r
-\r
-       private String password;\r
-\r
-       private String charset = JIS_CHARSET;\r
-\r
-       private String returnPath;\r
-\r
-       private List sentMails;\r
-\r
-       private List mimeMessages;\r
-\r
-       private List expectedMails;\r
-\r
-       private boolean debug;\r
-\r
-       /**\r
-        * コンストラクタ。\r
-        */\r
-       public MockSendMail() {\r
-               super();\r
-               initialize();\r
-       }\r
-\r
-       /**\r
-        * MockSendMailインスタンスを初期化します。\r
-        */\r
-       public void initialize() {\r
-               sentMails = new ArrayList();\r
-               expectedMails = new ArrayList();\r
-               mimeMessages = new ArrayList();\r
-       }\r
-\r
-       /**\r
-        * 送信されたメールのMimeMessageインスタンスを返します。\r
-        * 送信順の配列です。\r
-        * \r
-        * @return 送信メールのMimeMessageインスタンス配列\r
-        */\r
-       public MimeMessage[] getMimeMessages() {\r
-               return (MimeMessage[])mimeMessages.toArray(new MimeMessage[mimeMessages.size()]);\r
-       }\r
-\r
-       /**\r
-        * 送信されたMailインスタンスを返します。送信順の配列です。\r
-        * \r
-        * @return 送信メールのMailインスタンス配列\r
-        */\r
-       public Mail[] getSentMails() {\r
-               return (Mail[])sentMails.toArray(new Mail[sentMails.size()]);\r
-       }\r
-\r
-       /**\r
-        * デバッグモードが有効になっているか判定します。\r
-        * \r
-        * @return Returns 有効になっている場合 true\r
-        */\r
-       public boolean isDebug() {\r
-               return debug;\r
-       }\r
-\r
-       /**\r
-        * デバッグモード(コンソールにログを出力)を有効にします。\r
-        * デフォルトは無効です。\r
-        * \r
-        * @param debug デバッグモードを有効にする場合 true\r
-        */\r
-       public void setDebug(boolean debug) {\r
-               this.debug = debug;\r
-       }\r
-\r
-       /**\r
-        * デバッグモードが有効のとき、指定されたメッセージをコンソールに出力します。\r
-        * \r
-        * @param message コンソール出力するメッセージ\r
-        */\r
-       private void debug(String message) {\r
-               if (debug) {\r
-                       System.out.println("[" + Thread.currentThread().getName() + "] DEBUG "\r
-                                       + getClass().getName() + " - " + message);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * \r
-        * @param expectedMail\r
-        */\r
-       public void addExpectedMail(Mail expectedMail) {\r
-               expectedMails.add(expectedMail);\r
-       }\r
-\r
-       /**\r
-        * \r
-        * @param expectedMails\r
-        */\r
-       public void addExpectedMail(Mail[] expectedMails) {\r
-               for (int i = 0; i < expectedMails.length; i++) {\r
-                       addExpectedMail(expectedMails[i]);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * \r
-        * @throws AssertionFailedException\r
-        */\r
-       public void verify() throws AssertionFailedException {\r
-               debug("======================================================");\r
-               debug("                      verify()                        ");\r
-               debug("======================================================");\r
-\r
-               // メールの数を比較\r
-               int numOfExpectedMails = expectedMails.size();\r
-               int numOfSentMails = sentMails.size();\r
-               if (numOfExpectedMails != numOfSentMails) {\r
-                       throw new AssertionFailedException("期待メール数<" + numOfExpectedMails + ">と送信メール数<"\r
-                                       + numOfSentMails + ">が一致しませんでした。");\r
-               }\r
-\r
-               debug("期待メール数と送信メール数は一致しました。[" + numOfExpectedMails + "通]");\r
-\r
-               // メール内容を比較\r
-               for (int i = 0; i < numOfExpectedMails; i++) {\r
-                       Mail expected = (Mail)expectedMails.get(i);\r
-                       Mail sent = (Mail)sentMails.get(i);\r
-                       debug((i + 1) + "通目のチェックを開始します。("\r
-                                       + ((expected instanceof MockMail) ? "MockMail" : "Mail") + " - Mail)");\r
-                       checkEquality(expected, sent, i + 1);\r
-                       debug((i + 1) + "通目の期待メールと送信メール内容は一致しました。");\r
-               }\r
-\r
-               debug("verifyプロセスは全て成功しました。");\r
-               debug("======================================================");\r
-       }\r
-\r
-       /**\r
-        * @param expected\r
-        * @param sent \r
-        * @throws AssertionFailedException\r
-        */\r
-       public void checkEquality(Mail expected, Mail sent, int num) throws AssertionFailedException {\r
-               boolean mockMode = (expected instanceof MockMail);\r
-\r
-               // マルチパートメールの場合\r
-               if (expected.isMultipartMail()) {\r
-\r
-                       // HTML\r
-                       if (!mockMode) {\r
-                               if ((expected.getHtmlText() == null && sent.getHtmlText() != null)\r
-                                               || (expected.getHtmlText() != null && sent.getHtmlText() == null)\r
-                                               || (!expected.getHtmlText().equals(sent.getHtmlText()))) {\r
-                                       throwExceptioWithMessage("HTML本文", expected.getHtmlText(), sent.getHtmlText(),\r
-                                                       num);\r
-                               }\r
-                       } else if (mockMode && expected.getHtmlText() != null) {\r
-                               if (!expected.getHtmlText().equals(sent.getHtmlText())) {\r
-                                       throwExceptioWithMessage("HTML本文", expected.getHtmlText(), sent.getHtmlText(),\r
-                                                       num);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               // Return-Path\r
-               if (!mockMode || (mockMode && expected.getReturnPath() != null)) {\r
-                       if (expected.getReturnPath() != null && sent.getReturnPath() != null) {\r
-                               if (!expected.getReturnPath().equals(sent.getReturnPath())) {\r
-                                       throwExceptioWithMessage("Return-Pathアドレス", expected.getReturnPath()\r
-                                                       .toUnicodeString(), sent.getReturnPath().toUnicodeString(), num);\r
-                               }\r
-                       } else if ((expected.getReturnPath() != null && sent.getReturnPath() == null)\r
-                                       || (expected.getReturnPath() == null && sent.getReturnPath() != null)) {\r
-                               throw new AssertionFailedException();\r
-                       }\r
-               }\r
-\r
-               // From\r
-               if (!mockMode || (mockMode && expected.getFrom() != null)) {\r
-                       if (expected.getFrom() != null && sent.getFrom() != null) {\r
-                               if (!EqualityCheck.equals(expected.getFrom(), sent.getFrom())) {\r
-                                       throwExceptioWithMessage("Fromアドレス", expected.getFrom().toUnicodeString(), sent\r
-                                                       .getFrom().toUnicodeString(), num);\r
-                               }\r
-                       } else if ((expected.getFrom() != null && sent.getFrom() == null)\r
-                                       || (expected.getFrom() == null && sent.getFrom() != null)) {\r
-                               throw new AssertionFailedException();\r
-                       }\r
-               }\r
-\r
-               // to\r
-               InternetAddress[] expectedAddresses = expected.getTo();\r
-               InternetAddress[] sentAddresses = sent.getTo();\r
-               if (!mockMode || (mockMode && expectedAddresses.length > 0)) {\r
-                       if (expectedAddresses.length != sentAddresses.length) {\r
-                               throwExceptioWithMessage("Toアドレス数", Integer.toString(expectedAddresses.length),\r
-                                               Integer.toString(sentAddresses.length), num);\r
-                       }\r
-                       for (int i = 0; i < expectedAddresses.length; i++) {\r
-                               if (!EqualityCheck.equals(expectedAddresses[i], sentAddresses[i])) {\r
-                                       throwExceptioWithMessage("Toアドレス", expectedAddresses[i].toUnicodeString(),\r
-                                                       sentAddresses[i].toUnicodeString(), num);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               // cc\r
-               expectedAddresses = expected.getCc();\r
-               sentAddresses = sent.getCc();\r
-               if (!mockMode || (mockMode && expectedAddresses.length > 0)) {\r
-                       if (expectedAddresses.length != sentAddresses.length) {\r
-                               throwExceptioWithMessage("Ccアドレス数", Integer.toString(expectedAddresses.length),\r
-                                               Integer.toString(sentAddresses.length), num);\r
-                       }\r
-                       for (int i = 0; i < expectedAddresses.length; i++) {\r
-                               if (!EqualityCheck.equals(expectedAddresses[i], sentAddresses[i])) {\r
-                                       throwExceptioWithMessage("Ccアドレス", expectedAddresses[i].toUnicodeString(),\r
-                                                       sentAddresses[i].toUnicodeString(), num);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               // bcc\r
-               expectedAddresses = expected.getBcc();\r
-               sentAddresses = sent.getBcc();\r
-               if (!mockMode || (mockMode && expectedAddresses.length > 0)) {\r
-                       if (expectedAddresses.length != sentAddresses.length) {\r
-                               throwExceptioWithMessage("Bccアドレス数", Integer.toString(expectedAddresses.length),\r
-                                               Integer.toString(sentAddresses.length), num);\r
-                       }\r
-                       for (int i = 0; i < expectedAddresses.length; i++) {\r
-                               if (!EqualityCheck.equals(expectedAddresses[i], sentAddresses[i])) {\r
-                                       throwExceptioWithMessage("Bccアドレス", expectedAddresses[i].toUnicodeString(),\r
-                                                       sentAddresses[i].toUnicodeString(), num);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               // Reply-To\r
-               if (!mockMode || (mockMode && expected.getReplyTo() != null)) {\r
-                       if (expected.getReplyTo() != null && sent.getReplyTo() != null) {\r
-                               if (!EqualityCheck.equals(expected.getReplyTo(), sent.getReplyTo())) {\r
-                                       throwExceptioWithMessage("ReplyToアドレス",\r
-                                                       expected.getReplyTo().toUnicodeString(), sent.getReplyTo()\r
-                                                                       .toUnicodeString(), num);\r
-                               }\r
-                       } else if ((expected.getReplyTo() != null && sent.getReplyTo() == null)\r
-                                       || (expected.getReplyTo() == null && sent.getReplyTo() != null)) {\r
-                               throw new AssertionFailedException();\r
-                       }\r
-               }\r
-\r
-               // 件名\r
-               if (!mockMode || (mockMode && expected.getSubject().length() > 0)) {\r
-                       if (!expected.getSubject().equals(sent.getSubject())) {\r
-                               throwExceptioWithMessage("件名", expected.getSubject(), sent.getSubject(), num);\r
-                       }\r
-               }\r
-\r
-               // 本文\r
-               if (!mockMode || (mockMode && expected.getText().length() > 0)) {\r
-                       if (!expected.getText().equals(sent.getText())) {\r
-                               throwExceptioWithMessage("本文", expected.getText(), sent.getText(), num);\r
-                       }\r
-               }\r
-\r
-       }\r
-\r
-       /**\r
-        * 引数の値を受けてエラーメッセージを生成し、AssertionFailedErrorをスローします。\r
-        * \r
-        * @param name 一致しなかった項目名\r
-        * @param expectedValue 期待値\r
-        * @param sentValue 実際値\r
-        * @param num N番目のメール\r
-        * @throws AssertionFailedException 生成された例外\r
-        */\r
-       protected void throwExceptioWithMessage(String name, String expectedValue, String sentValue,\r
-                                                                                       int num) throws AssertionFailedException {\r
-               String message = num + "番目のメッセージで、「" + name + "」が一致しませんでした。期待値='" + expectedValue\r
-                               + "', 送信値='" + sentValue + "'";\r
-\r
-               debug(message);\r
-               debug("verifyプロセスは失敗しました。");\r
-               debug("******************************************************");\r
-\r
-               throw new AssertionFailedException(message);\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.SendMail#send(com.ozacc.mail.Mail)\r
-        */\r
-       public void send(Mail mail) throws MailException {\r
-               send(new Mail[] { mail });\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.SendMail#send(com.ozacc.mail.Mail[])\r
-        */\r
-       public void send(Mail[] mails) throws MailException {\r
-               debug("SMTPサーバ[" + host + "]に接続するフリ。");\r
-               debug("SMTPサーバ[" + host + "]に接続したフリ。");\r
-\r
-               Session session = Session.getInstance(new Properties());\r
-               for (int i = 0; i < mails.length; i++) {\r
-\r
-                       Mail mail = mails[i];\r
-\r
-                       // MimeMessageを生成\r
-                       MimeMessage message = new MimeMessage(session);\r
-                       MimeMessageBuilder builder = new MimeMessageBuilder(message);\r
-                       try {\r
-                               builder.buildMimeMessage(mail);\r
-                       } catch (UnsupportedEncodingException e) {\r
-                               throw new MailBuildException("サポートされていない文字コードが指定されました。", e);\r
-                       } catch (MessagingException e) {\r
-                               throw new MailBuildException("MimeMessageの生成に失敗しました。", e);\r
-                       }\r
-                       mimeMessages.add(message);\r
-\r
-                       debug("メールを送信するフリ。");\r
-                       sentMails.add(mail);\r
-                       debug(mail.toString());\r
-                       debug("メールを送信したフリ。");\r
-               }\r
-\r
-               debug("SMTPサーバ[" + host + "]との接続を切断するフリ。");\r
-               debug("SMTPサーバ[" + host + "]との接続を切断したフリ。");\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.SendMail#send(javax.mail.internet.MimeMessage)\r
-        */\r
-       public void send(MimeMessage mimeMessage) throws MailException {\r
-               throw new UnsupportedOperationException("申し訳ございません。MockSendMailでは、このメソッドをサポートしていません。");\r
-       }\r
-\r
-       /**\r
-        * @see com.ozacc.mail.SendMail#send(javax.mail.internet.MimeMessage[])\r
-        */\r
-       public void send(MimeMessage[] mimeMessages) throws MailException {\r
-               throw new UnsupportedOperationException("申し訳ございません。MockSendMailでは、このメソッドをサポートしていません。");\r
-       }\r
-\r
-       /**\r
-        * エンコーディングに使用する文字コードを返します。\r
-        * \r
-        * @return エンコーディングに使用する文字コード\r
-        */\r
-       public String getCharset() {\r
-               return charset;\r
-       }\r
-\r
-       /**\r
-        * メールの件名や本文のエンコーディングに使用する文字コードを指定します。\r
-        * デフォルトは ISO-2022-JP です。\r
-        * \r
-        * @param charset エンコーディングに使用する文字コード\r
-        */\r
-       public void setCharset(String charset) {\r
-               this.charset = charset;\r
-       }\r
-\r
-       /**\r
-        * セットされたSMTPサーバのホスト名、またはIPアドレスを返します。\r
-        * \r
-        * @return SMTPサーバのホスト名、またはIPアドレス\r
-        */\r
-       public String getHost() {\r
-               return host;\r
-       }\r
-\r
-       /**\r
-        * SMTPサーバのホスト名、またはIPアドレスをセットします。\r
-        * デフォルトは localhost です。\r
-        * \r
-        * @param host SMTPサーバのホスト名、またはIPアドレス\r
-        */\r
-       public void setHost(String host) {\r
-               this.host = host;\r
-       }\r
-\r
-       /**\r
-        * @return SMTPサーバ認証パスワード\r
-        */\r
-       public String getPassword() {\r
-               return password;\r
-       }\r
-\r
-       /**\r
-        * SMTPサーバの接続認証が必要な場合にパスワードをセットします。\r
-        * \r
-        * @param password SMTPサーバ認証パスワード\r
-        */\r
-       public void setPassword(String password) {\r
-               this.password = password;\r
-       }\r
-\r
-       /**\r
-        * @return SMTPサーバのポート番号\r
-        */\r
-       public int getPort() {\r
-               return port;\r
-       }\r
-\r
-       /**\r
-        * SMTPサーバのポート番号をセットします。\r
-        * \r
-        * @param port SMTPサーバのポート番号\r
-        */\r
-       public void setPort(int port) {\r
-               this.port = port;\r
-       }\r
-\r
-       /**\r
-        * @return Returns the protocol.\r
-        */\r
-       public String getProtocol() {\r
-               return protocol;\r
-       }\r
-\r
-       /**\r
-        * @param protocol The protocol to set.\r
-        */\r
-       public void setProtocol(String protocol) {\r
-               this.protocol = protocol;\r
-       }\r
-\r
-       /**\r
-        * @return Return-Pathアドレス\r
-        */\r
-       public String getReturnPath() {\r
-               return returnPath;\r
-       }\r
-\r
-       /**\r
-        * Return-Pathアドレスをセットします。\r
-        * \r
-        * @param returnPath Return-Pathアドレス\r
-        */\r
-       public void setReturnPath(String returnPath) {\r
-               this.returnPath = returnPath;\r
-       }\r
-\r
-       /**\r
-        * @return SMTPサーバ認証ユーザ名\r
-        */\r
-       public String getUsername() {\r
-               return username;\r
-       }\r
-\r
-       /**\r
-        * SMTPサーバの接続認証が必要な場合にユーザ名をセットします。\r
-        * \r
-        * @param username SMTPサーバ認証ユーザ名\r
-        */\r
-       public void setUsername(String username) {\r
-               this.username = username;\r
-       }\r
-\r
-}
\ No newline at end of file