snbhsmt_log

ネットワークとコンピュータ、その他いろいろ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

BeanUtil#copy() で Key を変換する

Slim3 の BeanUtil#copy() で Key 型を含むオブジェクトをコピーする際に、 keyToString したり逆に StringToKey する様にする。

Key の Converter を定義。

public class KeyConverter implements Converter {

    public Key getAsObject(String value) {
        return KeyFactory.stringToKey(value);
    }

    public String getAsString(Object value) {
        if (value == null) {
            return null;
        }
        if (!(value instanceof Key)) {
            throw new IllegalArgumentException("The class("
                    + value.getClass().getName()
                    + ") can not be assigned to key.");
        }
        return KeyFactory.keyToString((Key) value);
    }

    public boolean isTarget(Class clazz) {
        return Key.class.isAssignableFrom(clazz);
    }
}

この Converter を BeanUtil#copy() 時に以下の様に指定する。 obj が Key 型の key プロパティを含む何らかのオブジェクトです。

    // Object を Map にコピーする。
    // ただし key プロパティの値は keyToString された文字列。
    BeanUtil.copy(obj, map,
            new CopyOptions().converter(new KeyConverter(), "key"));
    // Map を Object にコピーする。
    // ただし key プロパティの値は StringToKey された Key オブジェクト。
    BeanUtil.copy(map, obj,
            new CopyOptions().converter(new KeyConverter(), "key"));

クライアント側では大概文字列化したキーを扱うと思うので、 map をそのまま JSONIC で JSON にしてレスポンスできたりして便利なのではないでしょうか。

スポンサーサイト

« Aptana Studio 3 の Commands のキー割当を変更|Top|slim3 のリクエスト処理の流れ »

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://snbhsmt.blog110.fc2.com/tb.php/127-e10408d4

Top

HOME

Author:snbhsmt
Google Profiles

http://www.ksky.ne.jp/~snbhsmt/

全ての記事を表示する

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。