X-HeaderをDtoから設定できるようにしたった

突然ですが、X-Headerの内容をDtoのプロパティにセットする事で動的に設定出来るようにしました。

Dtoに「XHeader」という名前のプロパティを作ればOKです。この名前はもう固定。

public class TestDto{
    private String XHeader;

    public String getXHeader() {
        return XHeader;
    }
    public void setXHeader(String header) {
        XHeader = header;
    }

}

型は、StringかMapに対応。Stringの場合は、

String header = "Message-ID: hogehogehogehoge\nX-Mailer: hogeMailer";
dto.setXHeader(header);

みたくすればよいです。キーと値は「: (コロンと半角スペース)」で区切ります。属性は改行コードで区切ります。改行コードはCRLFでもCRでもLFでも、テストは通ってます。

Mapの場合は、キーと値をそのまんまputしてやればよいです。どちらも型はString限定で。

Map header = new HashMap();
header.put("Message-ID", "hogehogehogehoge");
header.put("X-Mailer", "hogeMailer");
dto.setXHeader(header);

結果は同じ。

例えばtoがプロパティとしてあって、X-Headerにも「To: hogehoge」って書いちゃった場合、どうなるかは検証してないです・・・。どうなるんだろう。

0.9.6-SNAPSHOTでMavenリポジトリにデプロイしてあります。正式リリースはもうちょっと様子見てからの予定。