Tigerアノテーションの巻

これまでの解説はこちら。
http://d.hatena.ne.jp/rokugen/20061204

S2Maiは、定数アノテーションと同等の機能を持ったTigerアノテーションも提供しています。

Tigerアノテーションを使う場合は、s2mai-tiger.jarをクラスパスに含めて下さい。s2mai-tigerの配布zipには他のjarもありますが、開発・テスト時に必要となるものなので、実行時には特に必要ではありません。

使用例

定数アノテーションを下記のように使ったとします。

public interface TestMai {
    static final String FROM = "hoge@foo.com";
    
    static final MailAddress TO = new MailAddress("rokugen@example.com","六");
    
    static final MailAddress[] sendMail2_TO = 
        new MailAddress[]{new MailAddress("foo@example.com","ふー"),new MailAddress("bar@example.com","ばー")};
        
    static final MailAddress sendMail3_BCC = new MailAddress("fuga@example.com","ふが");
    
    void sendMail(TestData data);
    
    void sendMail2(TestData2 data);
    
    void sendMail3(TestData3 data);
}

これをTigerアノテーションに置き換えてみます。

@From(@MailAddr(address="hoge@foo.com"))
@To(@MailAddr(address="rokugen@example.com", personal="六"))
public interface TestMai {
    
    void sendMail(TestData data);
    
    @To({@MailAddr(address="foo@example.com", personal="ふー"), @MailAddr(address="bar@example.com", personal="ばー")})
    void sendMail2(TestData2 data);
    
    @Bcc("fuga@example.com");
    void sendMail3(TestData3 data);
}

こうなります。Mai共通に適用する場合はinterface型宣言の上、特定のメソッドに適用する場合はメソッドの上に書きます。

また、Tigerアノテーションと定数アノテーションの混在も可能です。

解説

@MailAddr

メールアドレスと名前を保持するアノテーションです。addressにメールアドレス、personalに名前を指定します。personalは省略可です。

@MailAddr(address="rokugen@example.com", personal="六")
@MailAddr(address="foo@example.com")

このアノテーションを用いて、各メール設定値用アノテーションに値を設定します。

メールプロパティ

メール設定値用に下記のアノテーションが用意されています。

アノテーション 指定出来る型、アノテーション
@Subject String
@From @MailAddr
@To @MailAddrおよびその配列
@Cc @MailAddrおよびその配列
@Bcc Stringおよびその配列
@ReplyTo @MailAddr
@ReturnPath String

@Subjectはもとより、@Bccと@ReturnPathは名前をセット出来ない(意味がない)ので、Stringになってます。